`
gzg0141
  • 浏览: 50462 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

jetty的使用

 
阅读更多

jetty的使用

 

之前都用tomcat的童鞋是不是觉得tomcat很方便啊?但是还有个更方便的web服务器叫jetty,而且它的体积很小,只有几百KB,所以在项目中使用是很方便的。 
  下面来介绍下jetty所必需的一些东西:请注意看他的包结构

 

 

这些包都是必需的。你可以去网上下个jetty-7.2版本的类似于tomecat的东西。

其实运用jetty的方法比较多。我们一一来分析。

方法1:

 看到jetty.xml和webdefault.xml这2玩意了吗?

 webdefault.xml官方的解释是 The default descriptor is a web.xml format file that is applied to the context before the standard WEB-INF/web.xml 你可以理解为在web.xml加载之前先加载的jetty所需的一个容器的配置文件。

你可以去你下载的jetty里面拿出来 比如说你的路径D:\jetty-hightide-7.2.1.v20101111\etc 去这里拽个出来放在你项目里面。内容基本上不要改。

然后我们来看下jetty.xml 这是一个负责告诉jetty容器要运行的你的工程是什么。

咱们可以先看下它的内容:

Xml代码  收藏代码
  1. <?xml version="1.0"?>    
  2. <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">    
  3. <Configure id="Server" class="org.mortbay.jetty.Server">    
  4.     <Set name="ThreadPool">    
  5.       <New class="org.mortbay.thread.QueuedThreadPool">    
  6.         <Set name="minThreads">10</Set>    
  7.         <Set name="maxThreads">200</Set>    
  8.         <Set name="lowThreads">20</Set>    
  9.         <Set name="SpawnOrShrinkAt">2</Set>    
  10.       </New>    
  11.     </Set>    
  12.     <Call name="addConnector">    
  13.       <Arg>    
  14.           <New class="org.mortbay.jetty.nio.SelectChannelConnector">    
  15.            <!--你的IP-->    
  16.             <Set name="host"><SystemProperty name="jetty.host" default="localhost"/></Set>    
  17.             <!--你的端口-->  
  18.             <Set name="port"><SystemProperty name="jetty.port" default="9090"/></Set>    
  19.             <Set name="maxIdleTime">30000</Set>    
  20.             <Set name="Acceptors">2</Set>    
  21.             <Set name="statsOn">false</Set>    
  22.             <Set name="confidentialPort">8443</Set>    
  23.         <Set name="lowResourcesConnections">5000</Set>    
  24.         <Set name="lowResourcesMaxIdleTime">5000</Set>    
  25.           </New>    
  26.       </Arg>    
  27.     </Call>    
  28.     
  29.     <Set name="handler">    
  30.       <New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection">    
  31.         <Set name="handlers">    
  32.          <Array type="org.mortbay.jetty.Handler">    
  33.            <Item>    
  34.              <New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler"/>    
  35.            </Item>    
  36.        <Item>    
  37.            <New class="org.mortbay.jetty.webapp.WebAppContext">      
  38.               <Set name="contextPath">/jettytest</Set>      
  39.                           <Set name="war">./WebRoot</Set>  <!--你的web应用根目录-->    
  40.                  </New>      
  41.           </Item>    
  42.          </Array>    
  43.         </Set>    
  44.       </New>    
  45.     </Set>    
  46.     <Ref id="RequestLog">    
  47.       <Set name="requestLog">    
  48.         <New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog">    
  49.           <Set name="filename"><SystemProperty name="jetty.logs"   default="./WebRoot/logs"  
  50.          />/yyyy_mm_dd.request.log</Set>    
  51.           <Set name="filenameDateFormat">yyyy_MM_dd</Set>    
  52.           <Set name="retainDays">90</Set>    
  53.           <Set name="append">true</Set>    
  54.           <Set name="extended">true</Set>    
  55.           <Set name="logCookies">false</Set>    
  56.           <Set name="LogTimeZone">GMT</Set>    
  57.         </New>    
  58.       </Set>    
  59.     </Ref>    
  60.     <Set name="stopAtShutdown">true</Set>    
  61.     <Set name="sendServerVersion">true</Set>    
  62.     <Set name="sendDateHeader">true</Set>    
  63.     <Set name="gracefulShutdown">1000</Set>    
  64. </Configure>    
  65.   
  66.    

 

字面就很好理解吧?看完了上面的你啥类都可以先不写,可以进入debug配置里面 如下图

 

右击new 一个如下图来配置

 

 

 

到这里方法1就基本完成了,保存配置 run debug!http://localhost:9090/jettytest 直接去访问吧。

 

方法2和方法3 都是用java代码来call jetty。

方法2先来:

Java代码  收藏代码
  1. public static void startJettyMethodO() {  
  2.         String jetty_home = "jettytest";//这个就是你的项目发布时候的名字  
  3.          try {  
  4.                 Server server = new Server();  
  5.                 Connector connector = new SelectChannelConnector();  
  6.                 connector.setPort(9999);  
  7.                 server.setConnectors(new Connector[] { connector });  
  8.                 WebAppContext webapp = new WebAppContext();  
  9.                 webapp.setContextPath("/"+jetty_home);//上下文路径 比如说/jettytest  
  10.                 webapp.setResourceBase("./WebRoot");//你的资源文件所在的路径 一般都在这下面   
  11.                 webapp.setDefaultsDescriptor("./WebRoot/etc/webdefault.xml");  
  12.                 server.setHandler(webapp);  
  13.                 server.start();  
  14.                 server.join();  
  15.             } catch (Exception e) {  
  16.                 e.printStackTrace();  
  17.             }  
  18.     }  
 

  方法3:

 

Java代码  收藏代码
  1. FileNotFoundException, Exception {  
  2.     Server server = new Server();    
  3.         XmlConfiguration configuration = new XmlConfiguration(    
  4.         new FileInputStream(    
  5.             "D:\\teamwork\\jettytest\\WebRoot\\etc\\jetty.xml")); //指定自定义的jetty.xml路径    
  6.         configuration.configure(server);    
  7.         server.start();  

 

附:官方apihttp://jetty.codehaus.org/jetty/jetty-6/apidocs/index.html

其他我也没啥好说的了。如果还有其他方法的话我会更新的。多谢支持~!

spiritfrog 写道
总结: 
本文作为jetty的初体验体会,着重于怎样移植webapp到jetty,以及如何快速在jetty上部署webapp,也尝试了嵌入方式启动webapp,这些工作在找到方法后很轻松(实际上我可找了很久)。主要是完成你的webapp对jetty的配置,然后start! 
本文并没有重点讨论jetty.xml的配置,这部分内容可以根据官方文档和看jetty自带的examples来学习,以后有时间看了再说。 

注意: 
jetty6是基于servlet2.5和jsp2.1设计的, 
几个核心包是jetty-6.1.11.jar、jetty-util-6.1.11.jar、servlet-api-2.5-6.1.11.jar; 
如果以嵌入式启动,需要引用jsp2.1包,我一开始引用的是jsp2.0包,结果造成了一些方法调用对不上参数的问题,明显是class版本有差别,换用jsp2.1就可以了。 
另外对于嵌入式,/lib/naming和/lib/plus下的包最好也全部引入。 
有时候jetty配置文件中会有如下引用jetty.home等变量 
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set> 
需要在启动程序配置中加上vm参数,如果是jetty.home,则加上 
-Djetty.home=D:/devworkspace/jetty-6.1.11
 

 

分享到:
评论
1 楼 yaoyqsz 2014-08-03  
connector.setPort(9999);  ---->connector.setPort(9090); 

相关推荐

    Jetty使用总结

    ### Jetty使用总结 #### 一、Jetty简介与优势 Jetty是一款开源的轻量级Web服务器,它由Eclipse基金会维护。相比于其他流行的Web服务器如Tomcat,Jetty以其小巧灵活著称,体积仅有几百KB,非常适合嵌入到项目中作为...

    Java Web服务器Jetty使用手册.doc

    Java Web服务器Jetty使用手册

    Jetty9 配置使用HTTPS证书

    配置Jetty9服务器使用HTTPS证书的过程涉及多个步骤,包括申请证书、转换证书格式、以及配置Jetty服务器本身。以下详细描述这些步骤。 首先,申请证书部分通常需要借助第三方服务商,如阿里云、腾讯云等,这些服务商...

    jetty-6.1.26.zip

    6. **线程模型**:Jetty使用一种高效的线程模型,名为“Continuation”,它可以异步处理请求,避免阻塞主线程,提高服务器的并发处理能力。 7. **部署和管理Web应用**:Jetty支持多种方式部署Web应用,包括WAR文件...

    Jetty的简单使用示例

    Jetty使用Servlet容器来处理HTTP请求。首先,你需要创建一个`ServletHandler`,然后注册你的Servlet。这里假设你有一个名为`MyServlet`的Servlet: ```java ServletContextHandler context = new ...

    jetty 服务器使用

    Jetty使用多种连接器(如HTTP、HTTPS)处理网络通信。默认的HTTP连接器是NIO,可以配置为EPOLL或ASYNC。同时,Jetty的线程池管理机制允许用户自定义线程池配置,以优化性能。 7. **安全与认证** Jetty支持基本的...

    解决jetty8内存溢出版本

    3. **合理配置线程池**:Jetty使用线程池处理请求。过大的线程池可能导致内存消耗增加,而过小的线程池可能限制服务处理能力。根据服务器硬件和应用需求,合理设定线程池的最小、最大线程数及超时时间。 4. **使用...

    jetty6 指南书

    - **配置文件**:Jetty使用XML配置文件来定制服务器行为,包括Connector、Handler、Server等。 - **部署Web应用**:支持静态和动态部署,包括Servlet2.5的新特性。 6. **Jetty架构**: - **Connector**:负责...

    jetty相关所有jar包

    6. **线程池**: Jetty使用自定义的线程池设计,可以根据应用需求动态调整线程数量,以平衡资源消耗和响应速度。 7. **部署工具**: Jetty提供了方便的应用部署和管理工具,如`jetty-runner`,可以快速启动一个包含...

    jetty源代码下载

    - **线程模型**:Jetty使用自定义的线程池模型,称为`QueuedThreadPool`,它优化了并发处理,提供了良好的性能和可扩展性。 - **Servlet容器**:Jetty作为Servlet容器,支持Servlet 2.5到5.0的规范,可以托管任何...

    jetty相关

    - **线程模型**:Jetty使用了一种高效的线程池模型,确保了高并发下的性能表现。 - **零配置**:Jetty可以通过Java代码或XML配置文件进行配置,甚至可以完全不配置,即零配置启动。 - **嵌入式**:Jetty可以轻松...

    jetty-6.1.26源码

    3. **线程模型**:Jetty使用了高效的线程模型来处理并发请求。例如,`org.eclipse.jetty.util.thread`包下的`QueuedThreadPool`是Jetty的默认线程池,它优化了线程的创建和销毁,提高了服务器性能。 4. **连接器...

    jetty-6.1.2rc2.zipjetty-6.1.2rc2.zipjetty-6.1.2rc2.zipjetty-6.1.2rc2.zip

    5. **线程模型**:Jetty使用一种高效的线程模型,降低了线程创建和销毁的开销,提高了并发性能。 6. **静态文件服务**:Jetty能够快速地处理静态资源,如HTML、CSS和JavaScript文件。 7. **Servlet和Filter支持**:...

    jetty 例子, 就一个demo 还有jar

    这个压缩包文件提供的可能是一个简单的Jetty使用示例,帮助初学者理解如何在Eclipse环境中配置和运行Jetty。 首先,让我们深入了解一下Jetty。Jetty是开源的,由Eclipse基金会维护,符合Java Servlet和JSP规范。它...

    jetty指导书

    针对Jetty使用过程中常见的问题,提供详细的解答和解决方案。 --- 综上所述,Jetty是一个功能强大且灵活的Web服务器和容器,它不仅支持最新的Web技术,还提供了许多高级特性,如异步处理、高性能IO等。通过深入...

    Jetty 9.4.6 jar包

    9. **日志与监控**: Jetty使用SLF4J进行日志记录,可以与各种日志框架集成,如Logback或Log4j。同时,可以通过JMX进行服务器状态监控。 10. **版本兼容性**: Jetty 9.4.6与Java 8及更高版本兼容,确保了现代Java...

    jetty 事例

    - 线程池:Jetty使用自定义的NIO线程池进行异步I/O处理,提高并发性能。 - 配置JVM:适当调整JVM参数,如堆大小、垃圾回收策略,可以进一步提升Jetty的性能。 7. **监控与管理** - JMX支持:Jetty支持JMX(Java ...

    jetty-distribution-9.4.31.v20200723_安装包.rar

    4. **线程模型优化**:Jetty使用了一种名为“NIO2”的高效I/O模型,它减少了线程上下文切换,提高了并发处理能力。 5. **嵌入式使用**:Jetty可以很容易地被嵌入到其他Java应用程序中,无需额外的服务器进程,这...

    jetty-distribution-9.1.0.v20131115

    3. **高性能**:Jetty使用NIO(非阻塞I/O)模型,提高了并发处理能力,适用于高流量的Web应用。 4. **模块化**:Jetty的组件设计允许用户只选择需要的部分,避免了不必要的资源消耗。 5. **兼容性**:Jetty完全支持...

Global site tag (gtag.js) - Google Analytics