Jetty9容器安装与使用

37 篇文章 0 订阅

Jetty9容器安装与使用

 

Jetty 安装、启动与项目部署 - 江河湖泊 - 博客园 (cnblogs.com)

 

jetty-distribution-9.4.22.v2019:

https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.22.v20191022/jetty-distribution-9.4.22.v20191022.zip

 

1.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 等

2.Jetty的使用方法

2.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/路径

bb8f2bf01d694bbaadc2fa4b55673d60.jpg

 

2.2.安装Jetty容器并使用

2.2.1.下载Jetty

 ​下载jetty-distribution-9.4.27.v20200227.tar.gz​

2.2.2.解压

 

tar -zxvf jetty-distribution-9.4.27.v20200227.tar.gz

 

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

2.2.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. 找到default下的dirAllowed选项
 

-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的日志的,如日志路径

3.部署项目到Jetty

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

4.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的配置和状态。

5.浏览web

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

 

1512f0f1be4408b22713a8067b048aa5.png

Jetty安装成功!

 

  • 19
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Jetty 是一个流行的 Java Web 服务器和 Servlet 容器,它也提供了对 WebSocket 的支持。下面是一个简单的示例,展示了如何在 Jetty使用 WebSocket: 1. 首先,确保你已经在项目中添加了 Jetty 的依赖。可以通过 Maven 或者其他构建工具来添加依赖。这里以 Maven 为例,在 pom.xml 文件中添加以下代码: ```xml <dependencies> <dependency> <groupId>org.eclipse.jetty.websocket</groupId> <artifactId>websocket-server</artifactId> <version>xxx</version> </dependency> </dependencies> ``` 请将 `xxx` 替换为你所需的 Jetty 版本号。 2. 创建一个 WebSocketHandler 类来处理 WebSocket 请求。这个类需要继承自 Jetty 的 `WebSocketHandler` 类,并实现 `onWebSocketConnect`、`onWebSocketText` 和 `onWebSocketClose` 方法。例如: ```java import org.eclipse.jetty.websocket.api.*; import org.eclipse.jetty.websocket.api.annotations.*; import org.eclipse.jetty.websocket.server.*; @WebSocket public class MyWebSocketHandler extends WebSocketHandler { @Override public void configure(WebSocketServletFactory factory) { factory.register(MyWebSocketHandler.class); } @OnWebSocketConnect public void onConnect(Session session) { // 连接建立时触发 } @OnWebSocketText public void onText(Session session, String message) { // 接收到文本消息时触发 } @OnWebSocketClose public void onClose(Session session, int statusCode, String reason) { // 连接关闭时触发 } } ``` 3. 创建一个 Jetty 服务器并配置 WebSocketHandler。例如: ```java import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.HandlerList; public class WebSocketServer { public static void main(String[] args) throws Exception { Server server = new Server(8080); WebSocketHandler webSocketHandler = new MyWebSocketHandler(); HandlerList handlers = new HandlerList(); handlers.addHandler(webSocketHandler); server.setHandler(handlers); server.start(); server.join(); } } ``` 4. 启动服务器,你的 WebSocket 服务就可以在 `ws://localhost:8080/` 上监听连接请求并处理消息了。 这只是一个简单的示例,你还可以根据自己的需求进行更复杂的定制和扩展。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YCY^v^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值