jetty(2) 容器实例部署时的问题解决方法

本贴最后更新于 2971 天前,其中的信息可能已经物是人非

jetty 应用部署时的注意点

本文的目的不是为了手把手教你部署一个 jetty 容器实例,而是为了让你在碰到部署问题是来查阅,节省网上搜索的时间,所以如果你发现并解决了本文未涵盖的部署问题,欢迎编辑此文。

  1. 在 start.d/http.ini 修改容器监听的端口号

    jetty.port=8046
  2. 向 jetty 实例中添加 jspjsp-impljstlplus 四个模块,命令:

    java -jar ../../jetty-distribution-9.2.21.v20170120/start.jar --add-to-start=jsp,jstl,jsp-impl,plus
  3. 配置**dataSource**,不用 META-INF/context.xml 了,换成 WEB-INF/jetty-env.xml,配置内容如下:

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> <Configure id="wac" class="org.eclipse.jetty.webapp.WebAppContext"> <New id="jdbc/mysql.demo" class="org.eclipse.jetty.plus.jndi.Resource"> <Arg>jdbc/mysql.demo</Arg> <Arg> <New class="org.apache.commons.dbcp.BasicDataSource"> <Set name="driverClassName">com.mysql.jdbc.Driver</Set> <Set name="url">jdbc:mysql://rds7niju37niju3.mysql.rds.aliyuncs.com:3306/clinic?characterEncoding=UTF-8&amp;autoReconnect=true&amp;zeroDateTimeBehavior=round</Set> <Set name="username">clinic</Set> <Set name="password">Clinic423</Set> <Set name="maxActive">20</Set> <Set name="maxIdle">3</Set> <Set name="maxWait">10</Set> <Set name="removeAbandoned">true</Set> <Set name="removeAbandonedTimeout">5</Set> <Set name="logAbandoned">false</Set> <Set name="validationQuery">select 1</Set> <Set name="testOnBorrow">false</Set> <Set name="testOnReturn">false</Set> <Set name="testWhileIdle">true</Set> <Set name="timeBetweenEvictionRunsMillis">60000</Set> <Set name="numTestsPerEvictionRun">100</Set> <Set name="connectionInitSqls"> <New class="java.util.ArrayList"> <Call name="add"> <Arg>set names utf8mb4</Arg> </Call> </New> </Set> </New> </Arg> </New> </Configure>
  4. 修改 Spring 配置文件中的**jndi 名称**,去掉 java:comp/env/,否则 jetty 无法找到该资源。

    <!-- connection pool--> <jee:jndi-lookup id="dataSource" jndi-name="jdbc/mysql.demo"></jee:jndi-lookup>
  5. 如果 dataSource 配置的是**dbcp**连接池,需要在应用的 WEB-INF/lib 目录中放入 commons-dbcp.jarcommons-pool.jar 两个实现 jar 包。

  6. start.ini 中配置**jvm**选项

    --exec -Xms200m -Xmx200m -XX:MaxPermSize=256m -verbose:gc -Xloggc:/home/jetty/instance/njmatrix/logs/jvmgc.log -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -XX:+PrintCommandLineFlags -XX:+PrintReferenceGC -XX:+PrintAdaptiveSizePolicy
  7. 设置 jetty 运行使用的**JAVA_HOME**,在 ijetty.sh 文件中设置,如:

    javabin=/etc/alternatives/java_sdk_1.8.0/bin/java
  8. 应用内获取配置文件完整路径的方式,需要改为:

    String logfile = getInitParameter("log4j-init-file"); String logfilepath = getServletContext().getRealPath("/"+logfile);

    旧的读取方式是:

    String prefix = getServletContext().getRealPath("/"); String logfilepath = prefix + getInitParameter("log4j-init-file");

    这将导致 prefix 结尾少个"/"

  9. 静态文件编码设置

    在 web.xml 中加入配置:

    <locale-encoding-mapping-list> <locale-encoding-mapping> <locale>zh</locale> <encoding>UTF-8</encoding> </locale-encoding-mapping> </locale-encoding-mapping-list>
  10. web.xml删除无用的 Servlet 配置

    jetty 中,如果 web.xml 定义的 Servlet 类不存在,应用启动时会报错,注意将没用的配置删除。

结束

以上是一部分在部署 jetty 容器时碰到的问题,如果部署、启动时有其它问题,可以查看 logs 目录下的日志,找到运行错误并修复。

  • Jetty
    22 引用 • 48 回帖 • 1 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3201 引用 • 8217 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 281 关注
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    186 引用 • 1021 回帖
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖 • 1 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    83 引用 • 412 回帖
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 643 关注
  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖
  • RemNote
    2 引用 • 16 回帖 • 26 关注
  • CodeMirror
    2 引用 • 17 回帖 • 173 关注
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 710 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    346 引用 • 757 回帖 • 1 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    43 引用 • 44 回帖 • 1 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 3 关注
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 643 关注
  • 房星科技

    房星网,我们不和没有钱的程序员谈理想,我们要让程序员又有理想又有钱。我们有雄厚的房地产行业线下资源,遍布昆明全城的 100 家门店、四千地产经纪人是我们坚实的后盾。

    6 引用 • 141 回帖 • 610 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    108 引用 • 153 回帖 • 1 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 89 关注
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 671 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 184 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 3 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 104 关注
  • 笔记

    好记性不如烂笔头。

    311 引用 • 794 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    10114 引用 • 45936 回帖 • 64 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 679 关注