设为首页 收藏本站
查看: 721|回复: 0

[经验分享] jetty的使用

[复制链接]

尚未签到

发表于 2017-2-25 12:58:53 | 显示全部楼层 |阅读模式
jetty的使用
之前都用tomcat的童鞋是不是觉得tomcat很方便啊?但是还有个更方便的web服务器叫jetty,而且它的体积很小,只有几百KB,所以在项目中使用是很方便的。 
  下面来介绍下jetty所必需的一些东西:请注意看他的包结构
DSC0000.jpg
 
 
这些包都是必需的。你可以去网上下个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代码   DSC0001.png


  • <?xml version="1.0"?>    
  • <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">    
  • <Configure id="Server" class="org.mortbay.jetty.Server">    
  •     <Set name="ThreadPool">    
  •       <New class="org.mortbay.thread.QueuedThreadPool">    
  •         <Set name="minThreads">10</Set>    
  •         <Set name="maxThreads">200</Set>    
  •         <Set name="lowThreads">20</Set>    
  •         <Set name="SpawnOrShrinkAt">2</Set>    
  •       </New>    
  •     </Set>    
  •     <Call name="addConnector">    
  •       <Arg>    
  •           <New class="org.mortbay.jetty.nio.SelectChannelConnector">    
  •            <!--你的IP-->    
  •             <Set name="host"><SystemProperty name="jetty.host" default="localhost"/></Set>    
  •             <!--你的端口-->  
  •             <Set name="port"><SystemProperty name="jetty.port" default="9090"/></Set>    
  •             <Set name="maxIdleTime">30000</Set>    
  •             <Set name="Acceptors">2</Set>    
  •             <Set name="statsOn">false</Set>    
  •             <Set name="confidentialPort">8443</Set>    
  •         <Set name="lowResourcesConnections">5000</Set>    
  •         <Set name="lowResourcesMaxIdleTime">5000</Set>    
  •           </New>    
  •       </Arg>    
  •     </Call>    
  •     
  •     <Set name="handler">    
  •       <New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection">    
  •         <Set name="handlers">    
  •          <Array type="org.mortbay.jetty.Handler">    
  •            <Item>    
  •              <New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler"/>    
  •            </Item>    
  •        <Item>    
  •            <New class="org.mortbay.jetty.webapp.WebAppContext">      
  •               <Set name="contextPath">/jettytest</Set>      
  •                           <Set name="war">./WebRoot</Set>  <!--你的web应用根目录-->    
  •                  </New>      
  •           </Item>    
  •          </Array>    
  •         </Set>    
  •       </New>    
  •     </Set>    
  •     <Ref id="RequestLog">    
  •       <Set name="requestLog">    
  •         <New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog">    
  •           <Set name="filename"><SystemProperty name="jetty.logs"   default="./WebRoot/logs"  
  •          />/yyyy_mm_dd.request.log</Set>    
  •           <Set name="filenameDateFormat">yyyy_MM_dd</Set>    
  •           <Set name="retainDays">90</Set>    
  •           <Set name="append">true</Set>    
  •           <Set name="extended">true</Set>    
  •           <Set name="logCookies">false</Set>    
  •           <Set name="LogTimeZone">GMT</Set>    
  •         </New>    
  •       </Set>    
  •     </Ref>    
  •     <Set name="stopAtShutdown">true</Set>    
  •     <Set name="sendServerVersion">true</Set>    
  •     <Set name="sendDateHeader">true</Set>    
  •     <Set name="gracefulShutdown">1000</Set>    
  • </Configure>    
  •   
  •    

 
字面就很好理解吧?看完了上面的你啥类都可以先不写,可以进入debug配置里面 如下图
DSC0002.jpg
 
右击new 一个如下图来配置
DSC0003.jpg
 
DSC0004.jpg
 
 
到这里方法1就基本完成了,保存配置 run debug!http://localhost:9090/jettytest 直接去访问吧。
 
方法2和方法3 都是用java代码来call jetty。
方法2先来:
Java代码  


  • public static void startJettyMethodO() {  
  •         String jetty_home = "jettytest";//这个就是你的项目发布时候的名字  
  •          try {  
  •                 Server server = new Server();  
  •                 Connector connector = new SelectChannelConnector();  
  •                 connector.setPort(9999);  
  •                 server.setConnectors(new Connector[] { connector });  
  •                 WebAppContext webapp = new WebAppContext();  
  •                 webapp.setContextPath("/"+jetty_home);//上下文路径 比如说/jettytest  
  •                 webapp.setResourceBase("./WebRoot");//你的资源文件所在的路径 一般都在这下面   
  •                 webapp.setDefaultsDescriptor("./WebRoot/etc/webdefault.xml");  
  •                 server.setHandler(webapp);  
  •                 server.start();  
  •                 server.join();  
  •             } catch (Exception e) {  
  •                 e.printStackTrace();  
  •             }  
  •     }  

   方法3:
 
Java代码  


  • FileNotFoundException, Exception {  
  •     Server server = new Server();    
  •         XmlConfiguration configuration = new XmlConfiguration(    
  •         new FileInputStream(    
  •             "D:\\teamwork\\jettytest\\WebRoot\\etc\\jetty.xml")); //指定自定义的jetty.xml路径    
  •         configuration.configure(server);    
  •         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
  


  • jettytest.rar (5.6 MB)
  • 下载次数: 152


  • 查看图片附件

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-347095-1-1.html 上篇帖子: 转载:maven使用jetty启动 下篇帖子: jetty初体验
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表