暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Jetty9容器安装与使用

WTech 2020-04-16
395





Jetty9介绍




截止本文,Jetty已经出到9了。Jetty作为一个小型、快速、可嵌入的Web server和servlet容器,在开发和生产方面,Jetty被广泛应用于各种项目、产品中。Jetty可以很轻易地被嵌入到设备、工具、框架、应用服务器、集群中。Jetty提供了Web server和javax.servlet容器功能,支持HTTP/2、WebSocket、 OSGi、 JMX、 JNDI、 JAAS以及其他许多的集成。下面这张表是Jetty的特点及它的支持的一些领域:

 Jetty特点Jetty支持
功能齐全、标准化 大型集群,比如Yahoo Hadoop集群
开源和商用云计算,比如Google AppEngine
灵活可扩展SaaS,例如Yahoo!还有Zimbra
软件小应用服务器,如Apache Geronimo
可嵌入框架,如GWT 
异步的工具,如EclipseIDE
企业可扩展 设备,如电话
Jetty Web Server提供了一个HTTP server和Servlet容器 , 能够从独立的或嵌入的Jetty实例中提供静态和动态内容 。Jetty Web Server提供以下支持:

异步的 HTTP Server

基于标准的Servlet容器

websocket server

http/2 server

异步的 Client (http/1.1, http/2, websocket)

OSGI, JNDI, JMX, JASPI, AJP 等


Jetty的使用方法

1

以插件的形式使用Jetty


这种方式是以内嵌Jetty的形式来使用Jetty!

步骤

在pom.xml中加入Jetty插件:

<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.27.v20200227</version>
</plugin>



在工程根目录运行下面的命令,就可以运行工程
mvn jetty:run


默认情况下,Jetty web容器的默认端口是8080。在浏览器输入以下URL即可访问:

http://localhost:8080/路径





安装Jetty容器并使用






1.下载Jetty

下载:https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.27.v20200227/jetty-distribution-9.4.27.v20200227.tar.gz



2.解压
~/Desktop$ tar -zxvf jetty-distribution-9.4.27.v20200227.tar.gz

解压出来的目录就是Jetty的安装目录。



3.配置Jetty

进入Jetty安装目录编辑bin/jetty.sh文件,打开JETTY_HOME和JAVA_OPTIONS的注释

Jetty的安装路径


JETTY_HOME=/home/kyun/Documents/jetty-distribution-9.4.27.v20200227
配置JVM


JAVA_OPTIONS="-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n -server -Xmx2048m -Xms2048m -Xmn1024m -Xss256k -XX:PermSize=128m -XX:MaxPermSize=128m"



1

配置成能够进行代码的调试,debug端口为9999:-Xdebug -Xrunjdwp:transport=dt_socket,address=9999,server=y,suspend=n


2

为这个Jetty容器设置jvm的启动内存:-Xmx2048m -Xms2048m -Xmn1024m -Xss256k -XX:PermSize=128m -XX:MaxPermSize=128m



设置jetty端口,进入Jetty安装目录修改etc/jetty-http.xml文件

<Set name="port"><Property name="jetty.http.port" deprecated="jetty.port" default="8888" /></Set>




设置服务器超时,进入Jetty安装目录修改etc/jetty.xml文件

<Set name="stopTimeout"><Property name="jetty.server.stopTimeout" default="5000"/></Set>






关闭目录访问(关闭目录遍历和关闭目录下的文件展示)

1. 找到jetty根目录下的 /etc/webdefault.xml

2. 找到<servlet-name>default</servlet-name>下的dirAllowed选项


 

<init-param>
<param-name>dirAllowed</param-name>
<param-value>true</param-value>
</init-param>







在实践中,上述的配置似乎不起作用。反而是自定义上下文为/,更能实现关闭目录浏览。

请参考《Jetty9部署多个项目及虚拟主机配置的方法》


Jetty安装目录/etc下的文件是Jetty的配置文件,如jetty-customrequestlog.xml、jetty-requestlog.xml、jetty-debuglog.xml文件是用来设置jetty的日志的,如日志路径》


部署项目到Jetty


把打包出来的war包,复制到webapps目录下,如将FlowerShop.war包放到webapps目录下。

Jetty启动/停止


通过Jetty安装目录下的bin/jetty.sh脚本来启动/停止jetty,如:


bin$ ./jetty.sh start
bin$ ./jetty.sh stop
bin$ ./jetty.sh restart


也可以通过Jetty根目录下的start.jar来启动,如:


$ java -jar start.jar

如果希望通过start.jar停止,则在启动的时候需要指定STOP.PORT和STOP.KEY两个参数,且启动和停止时,两个参数的值必须匹配,如:


# 启动
$ java -jar start.jar STOP.PORT=8181 STOP.KEY=ugcKey
# 停止
$ java -jar start.jar STOP.PORT=8181 STOP.KEY=ugcKey --stop


通过start.jar查看帮助和配置:


$ java -jar start.jar --help

主要的查看配置的参数有:


--list-config: 查看启动jetty使用的配置:java环境,jetty环境,JVM参数,属性,服务器classpath,服务器的xml配置等;--list-modules: 查看系统使用的模块--list-classpath: 查看系统使用的classpath--version:查看版本信息--module=<model-name>:临时启用一个模块




一般通过bin/jetty.sh控制jetty的运行,使用start.jar查看jetty的配置和状态。




浏览web

启动完浏览器就可以在浏览器输入:http://localhost:8888/war包名(即上下文路径)/路径进行访问了,如:http://127.0.0.1:8888/FlowerShop/home1






Jetty安装成功!





更多参考


  《SpringBoot项目打包war发布到Jetty9》

 《Jetty9部署多个项目及虚拟主机配置的方法》








文章转载自WTech,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论