Jetty9架构解析-Jetty配置及部署(二)

Jetty9架构解析-Jetty配置及部署(一) 2.1. Jetty配置概述对于Web服务器来说,可配置性是一项非常重要的指标(从软件设计层面,我们也可以称之为架构要素),它在很大程度上也会影响一款服务器的适用范围。之所以这么说,是因为真实的部署场景千变万化,只有做到灵活可配,我们才可以对其进行深度定制(调整内存分配、链接限制、I/O、安全配置等等),从而使服务器能够最大程度的满足我们不同的运维部署要求。作为轻量级Web服务器及Servlet 阅读详情

2.2. Jetty配置方式

除了Jetty配置及部署(一)介绍的命令行参数、ini和XML(Jetty IoC)文件的默认配置方式外,Jetty也为我们提供了其它灵活的配置方案。
由于Jetty的服务器对象(如Server、链接器、Context等)都是POJO,因此从理论上讲,我们可以采用编程的方式配置Jetty,这便是嵌入式Jetty所完成的工作。不仅如此,我们还可以采用其它IoC框架配置Jetty服务器。例如官方即支持通过Spring容器进行配置及实例化Jetty服务器。只要启动模块中包含了spring(模块名),我们就可以直接使用Spring的Bean配置文件来替代Jetty IoC文件。在讲解Web应用部署时,你将会看到一个采用Spring进行部署配置的示例。
总之,Jetty对IoC框架集成的机制非常灵活,只要愿意,我们可以非常容易的实现自己的替代方案,具体实现方式可以参见“扩展篇”。

注意:与Tomcat相比,Jetty的可扩展性做的非常出色。除了它的模块化架构,各个组件的可扩展性也充分说明了这一点。这也是Jetty进行嵌入式开发如此便捷的原因,而Tomcat的服务器生命周期处理,有部分是与其Catalina容器配置解析耦合在一起的,因此如果要进行嵌入式开发,则需要做额外的适配工作。

2.3. Jetty配置方式

本节主要讲解Jetty相关的启动配置,包括加载规则和常见的启动参数。

2.3.1. 加载规则

从前面的讲解我们知道,Jetty有三种方式添加命令行启动参数:命令行添加、start.ini、start.d/*.ini(大多数情况下,start.ini和start.d不必两者都保留,只需要两者择其一即可)。对于这三种方式,如果存在重复的配置,Jetty将自行进行覆盖。其具体规则是命令行的优先级最高,start.d目录次之,start.ini文件最低。这也符合我们对配置灵活性的要求,保证最灵活的方式优先级最高。

2.3.2. 常见启动参数

下面我们整理了部分常用的Jetty启动参数及其用途说明,你可以根据需要采用任意一种方式配置使用,如表2-1所示。

注意:所有JVM相关的参数也可以直接通过ini文件设置,此处不再赘述。

表2-1 Jetty常见启动参数

参数所属模块说明
jetty.http.hosthttpHTTP链接器绑定的主机地址,默认本机所有有效IP地址。
jetty.http.porthttpHTTP链接器监听的端口号,默认为8080。
jetty.http.idleTimeouthttpHTTP链接的最大空闲时间,单位为毫秒,默认为30000。
jetty.http.soLingerTimehttpHTTP链接器Socket Linger时间,默认为-1,即禁用。
jetty.http.acceptorshttpHTTP链接器用于接收请求的线程数量,默认为-1,Jetty基于处理器核数选择一个值,具体规则是低于16核为1,低于24核为2,低于32核为3,32核以上为4。
jetty.http.selectorshttpSocket selector的数量,默认为-1,Jetty基于处理器核数选择一个值,具体规则是低于4核为1,低于8核为3,8核以上为4。
jetty.http.acceptorQueueSizehttp用于设置ServerSocket绑定时的backlog值,输入连接指示(对连接的请求)的最大队列长度。如果队列满时收到连接指示,则拒绝该连接。
jetty.threadPool.minThreadsserverJetty线程池最小线程数,默认为10。
jetty.threadPool.maxThreadsserverJetty线程池最大线程数,默认为200。
jetty.threadPool.idleTimeoutserverJetty线程池线程空闲超时时间,单位为毫秒,默认为60000。
jetty.httpConfig.secureSchemeserverHTTP安全重定向时,URI的Scheme,默认为https。
jetty.httpConfig.securePortserverHTTP安全重定向端口,默认为8443。
jetty.httpConfig.outputBufferSizeserverHTTP响应内容缓冲大小,单位为字节,默认为32768。
jetty.httpConfig.outputAggregationSizeserver可以缓冲的响应内容最大写入长度,单位为字节,默认为8192。
jetty.httpConfig.requestHeaderSizeserverHTTP请求头的最大值,单位为字节,默认为8192。
jetty.httpConfig.responseHeaderSizeserverHTTP响应头的最大值,单位为字节,默认为8192。
jetty.server.stopAtShutdownserver在控制台按下ctrl+c停止Jetty服务器。
jetty.server.stopTimeoutserverJetty优雅停止的超时时间,单位为毫秒,默认5000。
jetty.server.dumpAfterStartserverJetty启动之后,输出服务器、组件以及Web应用的状态。
jetty.server.dumpBeforeStopserverJetty关闭之前,输出服务器、组件以及Web应用的状态。
jetty.ssl.hostsslTLS/SSL链接器绑定的主机地址,默认本机所有有效的IP地址。
jetty.ssl.portsslTLS/SSL链接器监听的端口,默认为8443。
jetty.ssl.idleTimeoutsslTLS/SSL链接器空闲超时时间,单位为毫秒,默认30000。
jetty.ssl.soLingerTimesslTLS/SSL链接器Socket Linger时间,默认为-1,即禁用。
jetty.ssl.acceptorssslTLS/SSL链接器用于接收请求的线程数量。
jetty.ssl.selectorssslTLS/SSL链接器Socket selector的数量。
jetty.ssl.acceptorQueueSizessl设置TLS/SSL链接器ServerSocket绑定时的backlog值
jetty.ssl.sniHostCheckssl是否检查请求主机名是否匹配SNI 名称。
jetty.ssl.stsMaxAgeSecondsssl设置Strict-Transport-Security 响应头的过期时间,单位为秒,默认为3153600。
jetty.sslContext.keyStorePathssl密钥库文件路径,相对于$JETTY_BASE。
jetty.sslContext.trustStorePathssl信任库文件路径,相对于$JETTY_BASE。
jetty.sslContext.keyStorePasswordssl密钥库密码。
jetty.sslContext.keyStoreTypessl密钥库类型(JCEKS、JKS、DKS、PKCS11、PKCS12)。
jetty.sslContext.keyStoreProviderssl密钥库提供者。
jetty.sslContext.keyManagerPasswordsslKeyManager密码。
jetty.sslContext.trustStorePasswordssl信任库密码。
jetty.sslContext.trustStoreTypessl信任库类型(JCEKS、JKS、DKS、PKCS11、PKCS12)。
jetty.sslContext.trustStoreProviderssl信任库提供者。
jetty.sslContext.needClientAuthssl是否要求客户端证书认证,如果为true并且客户端选择不提供自身的验证信息,则协商将会停止。
jetty.sslContext.wantClientAuthssl是否请求客户端证书认证,如果为true并且客户端选择不提供其自身的验证信息,则协商将会继续。
jetty.sslContext.sslSessionCacheSizesslSSL会话缓存大小。
jetty.sslContext.sslSessionTimeoutsslSSL会话缓存超时时间,单位为秒。
jetty.gzip.minGzipSizessl指定一个HTTP响应内容长度的限制,当超过该值时,Jetty启动GZIP压缩。
jetty.gzip.compressionLevelsslGZIP压缩级别。
jetty.gzip.excludedUserAgentssl正则表达式,用于指定禁用GZIP的User Agent。如果请求的User Agent匹配该表达式,则将不启用GZIP压缩。默认为.MSIE.6.0.,即IE6不支持GZIP压缩。
jetty.deploy.monitoredDirdeployJetty部署模块监控目录,相对于$JETTY_BASE,用于热部署监控文件变更。
jetty.deploy.monitoredPathdeployJetty部署模块监控路径(绝对目录),用于热部署监控文件变更。
jetty.deploy.defaultsDescriptorPathdeployWeb应用使用的默认部署描述文件,该文件中的配置信息将会被所有Web应用继承,默认为/etc/webdefault.xml。
jetty.deploy.scanIntervaldeployJetty部署模块扫描监控目录的时间间隔,单位为秒,默认为1秒。
jetty.deploy.extractWarsdeploy是否解压WAR包,默认为true。
jetty.jmxremote.rmihostjmx-remoteJMX远程访问绑定的RMI主机地址。
jetty.jmxremote.rmiportjmx-remoteJMX远程访问RMI监听的端口,默认为1999。

Jetty在启动时,会自动获取参数的键值对,并在加载各个模块时,将参数值以IoC的方式注入到各个组件对象。这是Jetty与Tomcat在参数处理方面的一大区别,Tomcat参数均以硬编码的方式进行读取,即便我们可以通过参数去控制Tomcat组件的行为,但是对于参数本身我们却无法控制。而Jetty则是在用IoC的方式构造组件对象时动态注入,因此方案更加灵活。我们完全可以通过更改IoC文件来增加、修改甚至删除相关参数,Tomcat则无法做到这一点。

注意:将参数读取加载与IoC框架结合的优势就是,在支持IoC框架的可替代性的同时,又不会降低系统的可配置性。针对Jetty的参数处理方式,相信熟悉Spring的读者会非常容易找到替代方案。


新书上市
《Tomcat架构解析》

《Tomcat架构解析》

Jetty9架构解析-Jetty介绍 1.1 简介 1.1.1. Jetty历史 Jetty是当下非常流行的一款轻量级Java Web服务器和Servlet容器实现,它由Eclipse基金会托管,完全免费而且开放源代码,因此所有人均可以从其官网下载最新源代码进行研究。由于其轻量、灵活的特性,Jetty被广泛用于一系列知名产品,例如ActiveMQ、Maven、Spark、Google App Engine、Eclip 阅读详情

相关推荐

逆向工程的艺术:如何绕过PDD的长连接机制实现高效抓包

本文深入解析了如何通过逆向工程技术绕过拼多多(PDD)的长连接机制实现高效抓包。详细介绍了动态调试方案、关键函数Hook技巧及流量解密重组方法,帮助开发者在非Root环境下捕获并解析PDD的加密数据。结合Python工具链,实现稳定数据采集,适用于电商数据分析和反爬策略研究。

weixin_29058331的博客 674

jetty入门笔记(从部署到原理)

第一章          部署   1.1    在Webapps目录部署 WebAppProvider定时扫描$jetty_home/webapps目录自动部署 注意如果同名则webapp会让步与contexts部署方式。   1.2    在contexts目录部署 ContextProvider定时扫描$jetty_home/contexts目录中的配置文件自动部署

jiangshanjianke的专栏 1万+

clang-tidy 使用指南

clang-tidy 需要一个编译数据库来了解如何编译你的代码。编译数据库通常是一个名为 compile_commands.json 的文件。在这个示例中,clang-tidy 会对 test.cpp 文件进行分析,并报告任何潜在的问题。例如,它可能会警告 test 函数中的未使用变量 x。clang-tidy 是一个用于 C++ 代码的静态分析工具,可以帮助你发现代码中的潜在问题和改进点。这将在 build 目录中生成一个 compile_commands.json 文件。

weixin_42244181的博客 2360

1.3.2 Jetty 的基本配置(1)

1.3.2 Jetty 的基本配置(1) Jetty 的基本配置与 Tomcat类似,在这里主要介绍 Jetty 的端口设置及如何部署 Web应用。由于 Jetty 是个嵌入式 Web 服务器,因此设置方式比较特殊。 Jetty 的配置文件放在 etc 路径下,该路径下有如下几个配置文件: jetty.xm1文件。 jetty-jmx.xm1文件。 jetty-plus.xm1文件。 ...

weixin_30677073的博客 222

图解凸函数与凹函数:别再被数学定义搞晕了!

本文通过图解和生活化类比,深入浅出地解释了凸函数与凹函数的数学定义及其与日常直觉的差异。文章详细介绍了凸函数的图像特征、数学定义(包括二阶导数判断)、在机器学习中的重要性,以及常见误区和实际应用中的判断技巧,帮助读者彻底理解这一关键数学概念。

weixin_29159441的博客 653

软考-高级-信息系统项目管理第四版(完整24章全笔记)

包 括:信息系统、业务应用信息系统、信息安全系统、信息系统工程、业务应用信息系统工程和 信息安全系统工程等业务应用信息系统是支撑业务运营的计算机应用信息系统,信息安全系统工程是指为了达到建设好信息安全系统的特殊需要而组织实施的工程。项目经理由执行组织委派, 负责领导团队实现项目目标。①制定项目章程:②制订项目管理计划:③指导与管理项目工作:④管理项目知识:⑤监控项目工作:⑥实施整体变更控制:项目范围管理过程包括:规划范围管理;收集需求;定义范围;创 建WBS;确认范围;控制范围;

weixin_44934104的博客 3万+

windows下jetty配置jvm启动参数

命令行到jetty安装目录执行以下指令: D:workjetty>java -jar start.jar --add-to-start=jvm INFO: jvm ? ? ? ? ? ? initialised in ${jetty.base}start.ini (appended) D:workjetty> –add-to-start表示启用一个模块,包括http,webapp,deploy等等,语法为: --add-to-start=<module-name1>,<mo

segegefe的博客 406

✨从零搭建 Ubuntu22.04 + Python3.11 + PyTorch2.5.1 GPU Docker 镜像并上传 Docker Hub

构建一个带 GPU 支持的深度学习开发镜像;使用 PyTorch 2.5.1(CUDA 12.4)环境;发布并托管 Docker 镜像至 Docker Hub;验证 GPU 环境正常运行!🎉 这将极大提升你的项目部署效率,尤其是在多人协作或跨平台部署场景中。

用大模型重构生活:猫奴程序员的AI智能日常记录 1578

jetty服务器的使用

1.jetty服务器的下载: http://www.eclipse.org/jetty/previousversions.html jetty对于jdk1.8支持到9.4版本,更高需要java11 左侧是win环境解压缩版,右侧是Linux解压缩版本。 2.下载后解压: 目录介绍: -- bin 存放Windows和linux等系统中使用的Jetty启动脚本和相关文件 -- contexts...

qq_41629490的博客 1609

TPAMI 2024 | 面向大型城市场景的快速建筑实例代理重建

大规模城市场景(特别是建筑物)的数字化是一个长期存在的开放问题,这归因于数据获取方面的挑战,如场景覆盖不完整、缺乏语义、规划路径的效率和可靠性低。在本文中,我们针对从航拍图像中重建城市建筑的问题,提出了一个有效的工作流程和一些新颖的算法,用于大型城市场景中高效的3D建筑实例代理重建。具体来说,我们提出了一种基于学习的新型方法,用于从航拍图像中进行城市建筑的实例分割,然后通过基于投票的算法将多视图实例信息融合到稀疏点云中(使用标准结构从运动管道重建)。我们的方法实现了从点云中对建筑实例进行有效的实例分割。

小白学视觉 322

2021年03月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

给定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0。n的位数为m。现在从m位中删除k位(0

人生就是一个不断学习的过程 1010

eclipse升级jetty9

找开eclipse软件备注 eclipse原来就是用jetty配合一起开发的,目前想升级 Help-->Install New software 进入以下网址选择一个版本 https://download.eclipse.org/jetty/updates/ 我选了一个版本 https://download.eclipse.org/jetty/updates/jetty-bundles-9.1.x/ 点击Next ...

Alex的博客 2737

单片机:实现简单的时间片轮询调度(附完整源码)

单片机:实现简单的时间片轮询调度(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 383

Jetty9架构解析-安装和启动

1.2. 安装和启动1.2.1. Jetty下载、安装你可以从http://www.eclipse.org/jetty/download.html下载最新的Jetty发布包,本书基于最新的9.3.x(9.3.11.v20160721)讲解,你可以根据需要下载zip或者tgz格式的压缩包。 Jetty是免安装的,直接将其解压到指定目录即可使用。1.2.2. Jetty目录介绍进入Jetty目录,

边城白衣的博客 6976

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

linux jetty9 内存配置,jetty9部署

1. 简单有效的方式把要部署的工程(war包、工程目录或者xml描述文件)放到${JETTY_HOME}的webapps目录下即可;需要注意的是: > jetty会对webapps目录下的几乎所有war包、目录、xml文件(有一些例外,如隐藏文件和.d结尾的目录等会被忽略)进行自动部署。 > 如果war包、目录和xml文件同名,则部署的顺序为xml文件 > war包 > 目...

weixin_32226023的博客 954

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Jetty9容器安装与使用

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

chenyu_Yang的博客 1279

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

linux jetty9 内存配置,Linux下Jetty9安装部署

在网上看Jetty觉得很NB就部署一下玩玩,长一下经验。下载Jetty9地址http://www.eclipse.org/jetty/previousversions.html这里可以挑自己版本,我这里选的9版本这里我把jetty 放在./usr/local/jetty目录下 下载好的上传就行了然后 tar解压tar -xvf jetty-distribution-9.4.6.v20170531...

weixin_42571738的博客 396

Jetty:部署到Jetty

Web应用的框架 标准Jetty发布版本能部署标准servlet Spec Web应用和Jetty内部ContextHandler部署描述符,或者两者的一个混合。 Web应用是可部署的动态(servlets、filters、jsps、等等)和静态内容、支持库、和绑定到特定上下文路径的描写性的元数据的集合。 格式和布局最终都是通过Servlet Spec定义,你可以查阅官方Servlet Sp

宁静致远 1万+

JETTY9(9.2.1)入门学习

下载的jetty-distribution-9.2.1.v20140609,算是目前为止的最新版本,旧

小灰灰的部落 1万+

Jetty 9安装部署文档

Jetty 9安装部署文档

manitod的博客 728

jetty linux 安装,Linux下Jetty9安装部署

在网上看Jetty觉得很NB就部署一下玩玩,长一下经验。下载Jetty9地址http://www.eclipse.org/jetty/previousversions.html这里可以挑自己版本,我这里选的9版本这里我把jetty 放在./usr/local/jetty目录下 下载好的上传就行了然后 tar解压tar -xvf jetty-distribution-9.4.6.v20170531...

weixin_42350470的博客 569

Jetty 9部署web应用

Jetty相关的文章比较少,不过官方文档挺齐全的。做下记录也是好事。 jetty9跟jetty8相比变化还是有一些的,jetty8部署web应用需要将war包部署到${JETTY_HOME}/webapps下,然后将context的相关配置放到${JETTY_HOME}/contexts下,然后启动即可。 jetty9将war包和context配置的xml都放到了${JETTY_HOME}/w

放佚风流 1万+

Jetty9架构解析-目录

目录 基础篇 第1章: Jetty介绍 1.1. 简介 1.1.1. Jetty历史 1.1.2. Jetty许可 1.2. 安装和启动 1.2.1. Jetty下载、安装 1.2.2. Tomcat启动 1.3. 应用部署 1.4. Jetty目录介绍 1.5. 小结 第2章: Jetty部署 第3章: Je

边城白衣的博客 750
上一篇: 《Tomcat架构解析》一书出版上市
下一篇: 为什么我要写《Tomcat架构解析》
边城白衣
博客等级 码龄14年 106粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值