java -jar start.jar --ini=start.ini
org.eclipse.jetty.start.Main会读取start.ini,将每行配置做相应的解析。
-Djetty.acceptors=4
jetty.extractwars=true
lib=/home/benni/myjetty/ext
path=/home/benni/myjetty/ext
--pre=/home/benni/myjetty/jetty-logging.xml
/home/admin/myjetty/jetty.xml
OPTIONS=Server,jsp
拿上面的start.ini做说明
1.
调用System.setProperties("jetty.acceptors",4),通过<SystemProperties name="jetty.acceptors" default="2"/>使用
2-4.
作为jetty内部properties,Config.setProperties("jetty.extractwars",true),通过<Properties name="jetty.extractwars" default="false" />使用
举个例子,如Connector配置如下
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<Set name="host"><Property name="jetty.host" /></Set>
<Set name="port"><Property name="jetty.port" default="8080"/></Set>
<Set name="maxIdleTime">300000</Set>
<Set name="Acceptors"><SystemProperties name="jetty.acceptors" default="2" /></Set>
</New>
</Arg>
</Call>
通过修改对应的启动参数就可更改监听端口地址
java -jar start.jar jetty.port=80 -Djetty.acceptors=4
ps:例子中启动没有用--ini=start.ini文件,那么jetty会怎么做呢?
回答:先在jetty.home目录下找start.ini文件;如果没有配置jetty.home,就在当前目录下找,都找不到就算了。所以不如jetty去查找start.ini文件,可以添加启动参数“--ini=" 或 “--ini"
再罗嗦一句,start.ini文件目的就是把很长的启动参数配置在文件中,方便应用的启动
。
5-6.
--pre=开头 或 不含“=”和不以“-”开头:视为配置文件,后面会调用org.eclipse.jetty.xml.XmlConfiguration解析并生成Server容器。
特别注意"lib=xxx"和“path=xxx"
path=[directory]
An additional class path element to add to the started class path. Typically
this is used to add directories of classes and/or resources
lib=[directory]
An additional library directory to add to the started class path. This must
be a (deep) directory of jars
XmlConfiguration是jetty容器启动的核心,根据配置文件实例化容器的各个组件并拼装,这个过程和spring容器启动类似,jetty官方文档都说它们比spring更早实现IOC。具体可以看一个jetty的配置文件(etc/jetty.xml),对这个官方文档
看就明白了。
事实上XmlConfiguration才是启动容器的入口,Start.jar是用于解析启动参数,然后启动XmlConfiguration,可以通过
java -jar start.jar jetty.port=80 -Dsys.prop=true --exec
然后"jps -v"观察,启动两个java进程,一个是start.jar,一个就是XmlConfiguration
当然抛开start.jar,嵌入方式启动jetty大概如下:
public static void main(String[] args) throws Exception {
// 实例化一个容器
Server server = new Server();
// 配置一个connector
Connector connector = new SelectChannelConnector();
connector.setPort(Integer.getInteger("jetty.port",8080).intValue());
server.setConnectors(new Connector[]
{ connector });
String war = "/home/ben/test.war";
String path = "/";
System.err.println(war + " " + path);
// 配置一个handler,这个handler会解析war包哦
WebAppContext webapp = new WebAppContext();
webapp.setContextPath(path);
webapp.setWar(war);
server.setHandler(webapp);
// 启动容器,默认启动一个线程池。
server.start();
server.join();
}
7.
OPTIONS=:控制jetty启动classpath中的jar文件
这个是怎么做到的?
其实jetty已经把lib包按名称分组(要正确配置jetty.home否则就找不到lib文件了),为了实现按需加载lib包。可以命令:java -jar start.jar --list-config查看。
而需要那些lib呢,配置路口就是
OPTIONS=。
jetty架构
分享到:
相关推荐
在使用maven开发web项目极大地方便了jar包的依赖,在测试时也可以集成Servlet容器,从启动速度和量级上看,Jetty无疑是不二选择,然而从8.x开始,如果你的web...而且启动过程会暂停十几秒,在反复调试代码时很浪费时间
SringBoot的概述# SpringBoot解决上述Spring的缺点SpringBoot对上述Spring的缺点进行的改善和优化,基于约定优于配置的思想,...自动配置Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考
您所要做的就是输入命令mvn -Prun 然后等待那个maven下载所有需要的东西(可能是第一次),当Jetty启动时,只需将浏览器指向http://localhost:8080享受。建造您可以使用以下命令构建Agorava mvn clean install 它将...
Spring Boot是一种基于Java的开发框架,旨在简化和加速应用程序的构建过程。它是由Spring团队开发的,构建在Spring框架之上,提供了一种的方式。 Spring Boot的主要特点之一是约定优于配置。通过使用默认的约定,...
《vSphere 故障排除》介绍了 vCenter Server 实施及相关组件的故障排除问题和过程。 A Active Directory 24 Auto Deploy 超时错误 18 重定向问题 19 coredump 20 错误的映像 18 DHCP 地址 22 故障排除 18 TFTP ...
.wsdl 生成实体定义 Web 服务实现类配置 cxf jaxws 端点参考添加spring web配置创建 Web 应用程序 web.xml 描述符将 jetty maven 插件添加到启动实现 Web 服务客户端使用拦截器保护 Web 服务使用 WS-Policy 保护 Web...
本人在开发中,使用了此项目,同时在开发过程中,对项目进行了部分优化修改,感谢原作者. 初始管理员账号:admin 密码:admin 数据库初始化 mysql> create database demo; mysql> create user 'work'@'%' identified by ...
将生成的jar包部署到Web服务器(如Tomcat、Jetty等)上,并启动项目。f. 根据实际需求,修改前端Vue.js代码以实现所需的功能。系统介绍:该系统具有以下主要功能:a. 用户管理:管理员可以添加、编辑和删除用户,设置...
JuShaTa容器 JuShaTa是一个Java容器,提供模块隔离及...但是在一个Java应用里面包含多个SpringBoot服务时,这些服务可能会调用不同版本的jar包,那么在程序启动或者运行过程中可能会报NoSuchMethodException这样的异常
SpringBoot实际上就是一个整合很多可插拔的组件(框架),内嵌了使用工具(诸如内嵌了Tomcat,Jetty等),方便开发人员快速建造和开发的一个框架。 IoC ( Inversion of Control ,控制倒转)。这是spring的核心,...
在应用程序启动时,引导过程将收集配置摘要并创建完整的应用程序上下文。 它还处理用于运行和测试应用程序的生命周期(为模块提供挂钩)。 测试还得益于灵活的方法,即可以用存根替换Bean实例,根据情况选择要加载的...
Cat产品价值:减少故障发现时间降低故障定位成本辅助应用程序优化Cat优势:实时处理:信息的价值会随时间锐减,尤其是事故处理过程中全量数据:全量采集指标数据,便于深度分析故障案例高可用:故障的还原与问题定位...