`
benni82
  • 浏览: 123317 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jetty启动过程

阅读更多
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代码启动

    让我们深入探讨如何将Jetty内嵌到Java代码中,以及这一过程涉及的关键知识点。 1. **Jetty简介** - Jetty是一个开源的HTTP服务器和Servlet容器,支持最新的Servlet规范,如Servlet 4.0。 - 它以其轻量级、模块化...

    jetty start 9.2.13 项目所需要的完整jar包,免费。jetty启动调试

    对于小型项目或开发测试环境来说,Jetty是一个理想的选择,因为它不需要复杂的安装过程,只需简单的命令即可启动,便于快速开发迭代。同时,其性能表现也非常优秀,能够处理高并发场景。在调试过程中,Jetty提供的...

    ExtJS Jetty启动报错 tag

    此问题涉及到的是一个基于Jetty服务器的ExtJS应用,在尝试启动时遇到了`JasperException`,这通常与JSP(Java Server Pages)的编译和解析有关。下面将详细解释这个问题及其解决方案。 首先,`JasperException`是...

    Jetty启动和JSP验证

    【Jetty启动与JSP验证】是针对Java Web开发中的两个关键环节,主要涉及轻量级Web服务器Jetty以及动态网页技术JSP的使用。在Java Web开发中,Jetty作为一个小巧、高效的服务器,常被用于测试和部署应用程序,而JSP则...

    main方法启动jetty

    **标签"jetty start"** 暗示了这个过程主要是关于启动Jetty服务器的,这可能是一个简单的脚本,用于快速启动和停止Jetty服务,便于开发和测试。 在给定的压缩包文件`StartJetty`中,可能包含了实现上述步骤的Java源...

    maven+jetty +ssh 项目例子

    2. **Jetty的配置和启动**:如何配置Jetty插件,通过`mvn jetty:run`命令快速启动Web应用。 3. **Spring Security的集成**:了解SSH的配置,如用户认证、授权规则的设定,以及如何保护特定的Web资源。 4. **Maven...

    jetty源码剖析

    Jetty 的组件启动过程包括了多个步骤,包括启动 Jetty server、加载配置文件、初始化组件等。下面是 Jetty 的组件启动过程: 1. 启动 Jetty server:Jetty server 是 Jetty 的核心组件,负责处理请求和响应。 2. ...

    idea的jetty-runner1.2.1插件

    总的来说,Jetty Runner 1.2.1 是 IntelliJ IDEA 中一个非常实用的插件,它简化了本地开发过程,使开发者能够更专注于编写代码和解决问题。如果你经常使用 IntelliJ IDEA 开发 Java Web 应用,这个插件绝对值得尝试...

    jetty下载启动配置详解及和maven结合pom配置

    为了方便管理,可以创建一个批处理文件来简化启动过程。例如,可以在任意位置创建一个名为`startJetty.bat`的文件,内容如下: ```batch @ECHO OFF D: cd D:\jetty-6.1.0 echo 启动 Jetty... pause java -jar start...

    maven集成jetty所需jar包maven-jetty-plugin,多版本

    `maven-jetty-plugin`简化了Java Web应用的开发和测试过程,通过Maven的命令行即可轻松启动Jetty服务器。了解并熟练掌握这个插件的使用,对于提升开发效率有着显著的效果。在选择版本时,应根据项目的具体需求和...

    jetty-6.1.26.zip

    10. **Maven插件**:对于使用Maven构建项目的开发者来说,Jetty还提供了Maven插件,可以方便地在开发过程中运行和测试Web应用。 总的来说,Jetty 6.1.26虽然相对较老,但它体现了Jetty服务器的核心设计理念和优势,...

    Maven + Jetty Plugin

    通过在Maven的`pom.xml`文件中添加Jetty插件,开发者可以在开发过程中快速启动和调试Web应用,无需每次都打包和部署到完整的应用服务器。 首先,我们需要了解Maven的插件系统。Maven插件是Maven生命周期的一部分,...

    实战 Jetty--让你快速速学会jetty

    以下是一个简单的示例代码片段,展示了如何创建一个监听8080端口的Server对象,设置一个默认Handler,并使用XML配置文件(如`jetty.xml`)初始化和启动服务器: ```java public class JettyServer { public static...

    jetty整合springmvc例子

    - **启动Jetty**:在主程序中,通过Jetty的API启动服务器,并加载Web应用。 4. **项目结构** 压缩包文件名为`jetty_mvn_hellowarapp`,暗示这是一个基于Maven的Jetty Hello World应用。可能的目录结构如下: - `...

    eclipse_jetty9离线插件

    Eclipse Jetty 9离线插件是专为开发者设计的一款工具,旨在简化在Eclipse集成开发环境中配置和运行Jetty服务器的过程。Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,广泛用于开发、测试和部署Web应用...

    maven-jetty-plugin

    4. **与Maven生命周期集成**:Maven Jetty Plugin提供了多个目标(goals),例如`jetty:run`用于启动服务器,`jetty:stop`用于停止服务器,这些目标可以与Maven的生命周期阶段结合,方便地在构建过程中调用。...

    eclipse jetty插件安装(离线版)

    Eclipse Jetty插件是开发Java Web应用时非常实用的工具,它允许开发者在Eclipse集成开发环境中直接启动和测试Jetty服务器,而无需通过命令行或其他方式。本篇文章将详细讲解如何离线安装Eclipse Jetty插件,并介绍其...

    jetty软件包升级版本

    7. **启动新版本**:使用新版Jetty启动服务器,检查日志输出以确保所有组件正常工作。 8. **测试**:全面测试应用程序的功能和性能,确保一切正常。这包括静态资源、Servlet、过滤器、监听器、WebSocket、安全设置...

    jetty服务器性能调整过程分析

    ### Jetty服务器性能调整过程分析 #### 一、目标 Jetty服务器采用了非阻塞I/O(NIO)加线程池的技术方案来实现在高并发场景下的高性能表现。本篇文章的目标是通过调整Jetty服务器的各项配置参数,来观察并评估其对...

    jetty 学习资料合集

    6. **Jetty Eclipse Plugin使用**:熟悉插件的安装和配置过程,学习如何在Eclipse中快速启动Jetty服务器、部署应用、调试Servlet和JSP,以及进行热部署和性能分析。 7. **性能调优**:了解如何通过调整Jetty的配置...

Global site tag (gtag.js) - Google Analytics