• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Jetty使用教程

武飞扬头像
执于代码
帮助1

LD is tigger forever,CG are not brothers forever, throw the pot and shine forever.
Modesty is not false, solid is not naive, treacherous but not deceitful, stay with good people, and stay away from poor people.
talk is cheap, show others the code and KPI, Keep progress,make a better result.
Survive during the day and develop at night。

目录

概 述

获取:

org.eclipse.jetty
jetty-project
${project.version}

1.4.2 在maven中心的更新log
Jetty不同版本的更新日志记录在一个叫做VERSIONS.txt的文件中,也可以在Maven中心找到,坐标如下

<dependency>
  <groupId>org.eclipse.jetty</groupId>
  <artifactId>jetty-project</artifactId>
  <version>${project.version}</version>
  <classifier>version</classifier>
  <type>txt</type>
</dependency>

二、Jetty的使用

你可以通过多种方式将Jetty植入使用的程序中,在不同的系统中使用它,或者做为一个独立的服务器来使用,这一节介绍了后者,即作为一个单独的服务器来部署web应用。

2.1.2 Jetty工程简介

license-eplv10-aslv20.html ,Jetty的许可文件
README.txt,版本信息
bin,存放在Unix系统下运行的shell脚本
demo-base/一个可运行包含示例web应用的Jetty服务器基目录
etc/Jetty的配置文件
lib/Jetty运行所必须的jar文件
logs/日志
modules/各个模块
notice.html/许可信息等
resources/包含新增到classpath配置文件夹,如log4j.properties
start.ini/存放启动信息
start.jar/运行Jetty的jar
webapps/一个用来存放运行在默认配置下的Jetty Web应用目录
2.2 运行Jetty

cd $JETTY_HOME
java -jar start.jar

你可以通过浏览器访问http://localhost:8080.。然而在 J E T T Y H O M E / w e b a p p s 目 录 下 并 没 有 部 署 任 何 w e b 应 用 , 所 以 你 将 会 看 到 一 个 J e t t y 提 供 的 404 错 误 页 面 , 并 不 推 荐 在 JETTY_HOME/webapps目录下并没有部署任何web应用,所以你将会看到一个Jetty提供的404错误页面,并不推荐在 JETTYHOME/webappswebJetty404JETTY_HOME下运行Jetty,而是建议运行一个Jetty基础应用。错误页面如下

标准的Jetty应用,有一个demo-base的文件夹,可以不在$JETTY_HOME下运行Jetty,在demo-base文件夹下执行以下命令:

cd $JETTY_HOME/demo-base/

java -jar $JETTY_HOME/start.jar

–list-modules:此命令将返回当前服务所有可用的模块,同时也会显示本地的模块,信息包括模块实现的顺序,依赖模块以及相应的jar信息

–list-config:显示运行环境和配置文件等信息

2.2.2 创建一个新的Jetty基目录

demo-base目录是jetty.base的一个基目录,在Jetty9.1版本中新增加的。一个Jetty基目录允许配置和web应用分开部署,可以方便升级系统。Jetty默认的配置基于两个属性:
jetty.home:这个属性定义了Jetty的路径,jar包,默认模块和默认xml配置(典型有 start.jar,lib等)

jetty.base:这个属性表示一个特殊Jetty服务应用的路径,包括它的日志,配置和web应用(典型有 start.ini,start.d,logs和webapps)

以下命令用于创建一个新的根路径,同时激活HTTP connector和web 应用部署模块,并且拷贝一个web应用例子来部署。

提升:
2.2.4 为HTTPS & HTTP2增加SSL

java -jar $JETTY_HOME/start.jar --add-to-startd=https,http2

java -jar $JETTY_HOME/start.jar

2015-06-04 13:52:01.933:INFO:oejs.ServerConnector:main: Started ServerConnector@6f1fba17{SSL,[ssl, alpn, h2, http/1.1]}{0.0.0.0:8443}

–add-to-startd:此命令在ini文件中设置有效的配置信息,使HTTPS和HTTP2支持SSL连接

输入java -jar $JETTY_HOME/start.jar --add-to-startd=https,http2命令后会提示下载一些jar包,输入y按回车,最终提示信息如下,说明操作成功:

2.2.5 修改Jetty的HTTPS端口

你可以通过增加jetty.ssl.port启动参数来修改HTTPS的端口信息

cd $JETTY_BASE

除了在命令行增加参数的方法外,还可以在start.ini和start.d/*.ini文件中进行配置,所以如果用户使用–add-to-startd命令来使HTTPS生效,同样也可以在start.d/https.ini文件中进行修改。

2.2.6 更多的start.jar操作选项

start.jar的工作是用来翻译命令行内容的,start.ini和start.d目录(包含其中的*.ini文件)生成一个classpath环境,各种属性和配置可以使用Jetty相应的xml进行配置,更多的使用方法可以通过使用命令来获得帮助。

java -jar $JETTY_HOME/start.jar --help

2.3 部署Web应用

三、Jetty配置信息介绍
3.1.1 Jetty POJO 配置

Jetty的核心组件是POJO(Plain Old Java Objects),配置Jetty的过程就是实例化一个Jetty POJOs并对其进行配置的过程,可以通过如下实现:
编写Java代码来直接实例化并配置Jetty对象,这称为嵌入式Jetty。

使用Jetty的xml配置文件,这是一个控制反转框架模式,从xml文件中实例化Jetty对象。 etc/jetty.xml配置文件是Jetty的主要配置文件,但是也有很多etc/jetty-feature.xml类型的文件被Jetty使用

使用第三方IOC框架,如Spring来实例化Jetty对象做为一个Spring Beans
  因为配置Jetty的主要方法是IoC,所以这个文档主要介绍此种方法。
使用第三方IOC框架,如Spring来实例化Jetty对象做为一个Spring Beans
  因为配置Jetty的主要方法是IoC,所以这个文档主要介绍此种方法

3.1.2 Jetty启动配置文件

Jetty使用如下配置文件来实例和启动一个服务,通过start.jar处理

Jetty启动原理使用命令行,使用 J E T T Y B A S E / s t a r t . i n i 和 JETTY_BASE/start.ini和 JETTYBASE/start.iniJETTY_BASE/start.d/*.ini文件来创建一个有效的命令参数参数如下:

激活的模块 --module=name

通过name=value的来为Jetty的IOC配置属性

XML files in Jetty IoC (or Spring) XML format

一些JVM参数组合通过–exec,例如-Xbootclasspath.

mod files:

$JETTY_HOME/modules/*.mod文件包含各个模块的定义,可以被–module=name命令激活,每个mod文件定义:

$JETTY_HOME/modules/*.mod文件包含各个模块的定义,可以被–module=name命令激活,每个mod文件定义:

常见典型的模块配置信息通长很少被改动,.mod文件通常位于$JETTY_HOME/modules/文件夹下,但是额外增加的或者编辑过的通常放在 J E T T Y B A S E / m o d u l e 下 , 如 果 一 个 模 块 需 要 被 修 改 , 最 好 的 做 法 是 在 修 改 前 从 JETTY_BASE/module下,如果一个模块需要被修改,最好的做法是在修改前从 JETTYBASE/moduleJETTY_HOME/modules/拷贝.mod到 $JETTY_BASE/modules/

XML files:  
学新通
3.1.3 其它配置文件

除了上面描述的配置文件以外,服务的配置信息可以使用如下的文件:

所有在/webapps目录下用来被IoC使用的xml文件,用来部署相应的模块,注入信息到HttpContext ,最终创建一个容器。这些可能是标准的web应用程序或定制上下文创建的特殊目的的处理器。
  所有在/webapps目录下用来被IoC使用的xml文件,用来部署相应的模块,注入信息到HttpContext ,最终创建一个容器。这些可能是标准的web应用程序或定制上下文创建的特殊目的的处理器。

web.xml:

web.xml用来定义和配置过滤器,servlet或者资源。Jetty WebAppContext组件使用这个XML文件用来:

设置一个web项目的默认的根路径

通过WEB-INF/web.xml进行特殊的配置

Interpret descriptor fragments included in the META-INF directory of Jar files within WEB-INF/lib.

Property Files:

标准的Java配置文件,同样适用于Jetty配置:

可以为Jetty IoC增加参数

配置默认日志信息(StdErrLog),其他日志框架也可以通过配置被使用(例如,log4j)

数据库的登录配置信息等

3.1.4 Jetty IoC XML使用

为了理解Jetty IOC XML使用方法,如下面的示例Java中,嵌入式Jetty服务器实例并配置

可以配置:
  这一节将介绍Jetty常用的配置。

ThreadPool:

服务器实例提供了一个默认ThreadPool实例,用来供其它组件调用。配置线程池的主要参数有最大和最小数量的设置,设置在start.ini文件或者start.d/server.ini文件中。
Handlers:
  一个Jetty服务器可以只有一个处理程序实例来处理传入的HTTP请求。然而一个处理程序可能是一个容器或包装其他处理程序形成一个树的处理程序。在etc/jetty.xml文件中配置的默认的处理程序包含处理程序集合和一个默认的处理程序,根据路径找到相应的处理程序,默认的处理器处理404错误。其他配置信息可以增加到处理树中(例如,jetty-rewrite.xml, jetty-requestlog.xml), 或者配置一个组件用于热部署处理(例如,jetty-deploy.xml) 。
Server Attributes:

服务器可以通过字符串来映射到一个对象上,如果一个对象实现了LifeCycle接口,那么这个对象可以监听这个Jetty服务的启停。通常服务器的属性保存在服务器生命周期内。
Server fields:

服务器也有一些特殊的的配置属性,配置在start.ini或者start.d/server.ini文件中,除了控制属性外还有发送时间和http响应的版本。

Connectors:

服务器拥有一个连接的集合,用来接收http请求,和其它Jetty支持的协议请求,下一章节将要介绍配置连接。对于服务器可以设置所有的连接也可以增加或者删除个别连接。

服务器能容纳额外的服务对象,有时作为属性,但经常做为有生命周期的bean。

Jetty服务器连接器是一个网络端点接受连接一个或多个协议产生Jetty服务器的请求或消息。在标准Jetty服务器中,可以通过额外的文件增加Jetty服务器支持的协议,例如http.ini,https.ini 和jetty-http2.xml,连接的配置一般都是典型的,如下:

Port:

监听TCP/IP连接请求的端口,使用jetty.http.port(或者jetty.ssl.port)属性进行配置,如果没有配置默认8080(TLS默认8443)。

Host:
  您可以配置一个主机的主机名或IP地址来识别一个特定的网络接口的监听。如果没有设置,或者设置为0.0.0.0,连接器将监听所有主机。可以通过xml文件中jetty.host的这个属性进行设置

Idle Timeout:

时间以毫秒为单位,一个连接的超时时间。
  
通过HttpConfiguration 实例来配置HTTP连接(包含HTTP, HTTPS 和HTTP2),可以独立于特定的网络协议,标准的Jetty服务通过jetty.xml来配置一个单例的HttpConfiguration对象。

SSL Context Factory:
  通过本地的密钥来保证ssl连接的安全性。

小结

很多地方的时候都不明白是如何使用的,因此有可能翻译不到位,估计,那时候我会根据自己的理解写一点新手教程。

参考资料和推荐阅读

1.链接: 参考资料.

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfjhek
系列文章
更多 icon
同类精品
更多 icon
继续加载