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架构
分享到:
相关推荐
让我们深入探讨如何将Jetty内嵌到Java代码中,以及这一过程涉及的关键知识点。 1. **Jetty简介** - Jetty是一个开源的HTTP服务器和Servlet容器,支持最新的Servlet规范,如Servlet 4.0。 - 它以其轻量级、模块化...
对于小型项目或开发测试环境来说,Jetty是一个理想的选择,因为它不需要复杂的安装过程,只需简单的命令即可启动,便于快速开发迭代。同时,其性能表现也非常优秀,能够处理高并发场景。在调试过程中,Jetty提供的...
此问题涉及到的是一个基于Jetty服务器的ExtJS应用,在尝试启动时遇到了`JasperException`,这通常与JSP(Java Server Pages)的编译和解析有关。下面将详细解释这个问题及其解决方案。 首先,`JasperException`是...
【Jetty启动与JSP验证】是针对Java Web开发中的两个关键环节,主要涉及轻量级Web服务器Jetty以及动态网页技术JSP的使用。在Java Web开发中,Jetty作为一个小巧、高效的服务器,常被用于测试和部署应用程序,而JSP则...
**标签"jetty start"** 暗示了这个过程主要是关于启动Jetty服务器的,这可能是一个简单的脚本,用于快速启动和停止Jetty服务,便于开发和测试。 在给定的压缩包文件`StartJetty`中,可能包含了实现上述步骤的Java源...
2. **Jetty的配置和启动**:如何配置Jetty插件,通过`mvn jetty:run`命令快速启动Web应用。 3. **Spring Security的集成**:了解SSH的配置,如用户认证、授权规则的设定,以及如何保护特定的Web资源。 4. **Maven...
Jetty 的组件启动过程包括了多个步骤,包括启动 Jetty server、加载配置文件、初始化组件等。下面是 Jetty 的组件启动过程: 1. 启动 Jetty server:Jetty server 是 Jetty 的核心组件,负责处理请求和响应。 2. ...
总的来说,Jetty Runner 1.2.1 是 IntelliJ IDEA 中一个非常实用的插件,它简化了本地开发过程,使开发者能够更专注于编写代码和解决问题。如果你经常使用 IntelliJ IDEA 开发 Java Web 应用,这个插件绝对值得尝试...
为了方便管理,可以创建一个批处理文件来简化启动过程。例如,可以在任意位置创建一个名为`startJetty.bat`的文件,内容如下: ```batch @ECHO OFF D: cd D:\jetty-6.1.0 echo 启动 Jetty... pause java -jar start...
`maven-jetty-plugin`简化了Java Web应用的开发和测试过程,通过Maven的命令行即可轻松启动Jetty服务器。了解并熟练掌握这个插件的使用,对于提升开发效率有着显著的效果。在选择版本时,应根据项目的具体需求和...
10. **Maven插件**:对于使用Maven构建项目的开发者来说,Jetty还提供了Maven插件,可以方便地在开发过程中运行和测试Web应用。 总的来说,Jetty 6.1.26虽然相对较老,但它体现了Jetty服务器的核心设计理念和优势,...
通过在Maven的`pom.xml`文件中添加Jetty插件,开发者可以在开发过程中快速启动和调试Web应用,无需每次都打包和部署到完整的应用服务器。 首先,我们需要了解Maven的插件系统。Maven插件是Maven生命周期的一部分,...
以下是一个简单的示例代码片段,展示了如何创建一个监听8080端口的Server对象,设置一个默认Handler,并使用XML配置文件(如`jetty.xml`)初始化和启动服务器: ```java public class JettyServer { public static...
- **启动Jetty**:在主程序中,通过Jetty的API启动服务器,并加载Web应用。 4. **项目结构** 压缩包文件名为`jetty_mvn_hellowarapp`,暗示这是一个基于Maven的Jetty Hello World应用。可能的目录结构如下: - `...
Eclipse Jetty 9离线插件是专为开发者设计的一款工具,旨在简化在Eclipse集成开发环境中配置和运行Jetty服务器的过程。Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,广泛用于开发、测试和部署Web应用...
4. **与Maven生命周期集成**:Maven Jetty Plugin提供了多个目标(goals),例如`jetty:run`用于启动服务器,`jetty:stop`用于停止服务器,这些目标可以与Maven的生命周期阶段结合,方便地在构建过程中调用。...
Eclipse Jetty插件是开发Java Web应用时非常实用的工具,它允许开发者在Eclipse集成开发环境中直接启动和测试Jetty服务器,而无需通过命令行或其他方式。本篇文章将详细讲解如何离线安装Eclipse Jetty插件,并介绍其...
7. **启动新版本**:使用新版Jetty启动服务器,检查日志输出以确保所有组件正常工作。 8. **测试**:全面测试应用程序的功能和性能,确保一切正常。这包括静态资源、Servlet、过滤器、监听器、WebSocket、安全设置...
### Jetty服务器性能调整过程分析 #### 一、目标 Jetty服务器采用了非阻塞I/O(NIO)加线程池的技术方案来实现在高并发场景下的高性能表现。本篇文章的目标是通过调整Jetty服务器的各项配置参数,来观察并评估其对...
6. **Jetty Eclipse Plugin使用**:熟悉插件的安装和配置过程,学习如何在Eclipse中快速启动Jetty服务器、部署应用、调试Servlet和JSP,以及进行热部署和性能分析。 7. **性能调优**:了解如何通过调整Jetty的配置...