jetty了解与使用

一、Jetty简介

1.1什么是Jetty

Jetty是一个servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。它支持HTTP协议,并实现了Servlet规范、Jsp规范和JEE部分规范。

1.HTTP协议是Web服务与web浏览器通信的基本协议,因而,Jetty作为一个web容器,首先就必须实现HTTP协议。Jetty3及以上版本都支持HTTP/1.1 协议,HTTP/1.1协议是目前最为广泛使用的web协议。

2.Servlet 规范是SUN公司制定的web容器规范,它提出了一组规范API,同时还说明了如何部署web应用等一系列问题。Jetty很好的实现了Servlet规范。

Jetty可以用来作为HTTP服务器、客户端、Servlet的容器

1.2 Jetty的基本构架

首先回答一个问题:Jetty到底为我们做了哪些事情呢?

Jetty作为一个servlet容器,对外,它要和web客户端通信,对内,它要完成和servlet的交互。

Jetty的工作过程大致如下:

1.启动jetty服务器,监听指定的端口,如80端口,等待客户端的连接请求;

2.收到客户端的连接请求时,与客户端建立TCP连接;

3.接收客户端的数据,然后根据协议(如HTTP,AJP等)解析数据内容,将数据转换成Servlet可识别的ServletRequest对象;

4.通过URL找到对应的Servlet,将ServletRequest转交给Servlet处理;

5.将Servlet的处理结果(ServletResponse对象)组装成协议报文返回给客户端。

Jetty的基本构架如下图所示:

 

它由Server,Connector,Handler,ThreadPool着四个部分组成,其中:

1.Server代表一个Jetty服务器对象,它的作用就好象一个插线板,把Connector、Handler和ThreadPool集成在一起让它们协同起来工作。

2.Connector是连接器,它负责建立连接。当Connector接收到一个请求后,产生一个新的HttpConnection对象,然后由Server对象调用Handler来处理HttpConnection对象。HttpConnection类就是解析Http协议的地方,它提供了附属的Request对象和Response对象。Connector和Connectioin是紧密相关的,如果一个Connector要识别特定的协议,那么就必须对应一个Connection实现。

3.Handler是处理器,负责处理连接请求,输出响应。

4.ThreadPool是线程池,负责管理和调度多个线程,用来服务与HTTP connections和Handler的运行。

要让Jetty服务器工作起来,我们首先初始化一个Server对象实例,然后给它注册一个或多个Connector对象实例、注册一个ThreadPool对象、注册多个Handler对象并让这些Handler组合起来,这样一个Jetty服务器便组装完成了。

1.3工作过程

Jetty的工作过程如下:

1.启动jetty服务器,监听指定的端口,如80端口,等待客户端的连接请求;

2.收到客户端的连接请求时,与客户端建立TCP连接;

3.接收客户端的数据,然后根据协议(如HTTP,AJP等)解析数据内容,将数据转换成Servlet可识别的ServletRequest对象;

4.通过URL找到对应的Servlet,将ServletRequest转交给Servlet处理;

5.将Servlet的处理结果(ServletResponse对象)组装成协议报文返回给客户端。

1.4 Jetty的特点

1. Jetty可以独立作为web服务器软件使用,也可以嵌入移动设备、应用程序服务器和集群等;

2. Jetty可以根据需要任意配置jetty启用的功能,还可以很方便的扩展jetty的功能(面向接口的设计和开放的开源协议);

3. Jetty能在有大量服务请求或者多数请求的处理时间比较长的情况下,提供比较稳定的服务(支持NIO)。

二 Jetty的安装和启动

2.1 安装

将jetty包下载(https://www.eclipse.org/jetty/)到本地,解压后进入目录中,输入“Java –jar start.jar”命令启动jetty服务。浏览器输入localhost:8080即可看到访问成功

2.2 Jetty的启动方式

2.2.1 命令行启动

#jar包有界面启动
java -jar start.jar 

#jar包无界面启动
java -jar start.jar &
敲回车启动成功后,即在后台运行,如果想重启可以杀掉进程重新启动命令

#在linux服务器下默认装的jdk是1.7,想用1.8 ,可以使用java8方式启动
/usr/local/java8/bin/java  -jar start.jar

#使用jetty.sh启动/停止/重新启动服务,服务直接在后台运行
sh jetty.sh run
sh jetty.sh stop
sh jetty.sh restart

在maven中启动
步骤1.引入Jetty依赖:

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

步骤2.执行 mvn jetty:run

Jetty Maven Plugin插件支持的其它goals简介如下:

run-war:将Web应用程序打包成war包并部署到Jetty中。
run-exploded:使用war exploded模式(文件夹模式)将Web应用程序打包并部署到Jetty中
deploy-war:功能与run-war类似,区别就是maven生命周期中不包含package阶段
run-forked:jetty-7.5.2之后的版本可用,强迫Jetty使用一个新的JVM启动应用程序
start:jetty-7.6.0之后的版本可用,一般在配合插件中的execution节点使用,test-compile阶段之后才执行构建,确保必要的类及文件都生成好了。
stop:关闭运行中的Jetty容器


 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值