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"><SystemPropertyname="jetty.host"default="localhost"/></Set>
  17. <!--你的端口-->
  18. <Set name="port"><SystemPropertyname="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. <Set name="handler">
  29. <New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection">
  30. <Set name="handlers">
  31. <Array type="org.mortbay.jetty.Handler">
  32. <Item>
  33. <New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler"/>
  34. </Item>
  35. <Item>
  36. <New class="org.mortbay.jetty.webapp.WebAppContext">
  37. <Set name="contextPath">/jettytest</Set>
  38. <Set name="war">./WebRoot</Set><!--你的web应用根目录-->
  39. </New>
  40. </Item>
  41. </Array>
  42. </Set>
  43. </New>
  44. </Set>
  45. <Ref id="RequestLog">
  46. <Set name="requestLog">
  47. <New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog">
  48. <Set name="filename"><SystemPropertyname="jetty.logs"default="./WebRoot/logs"
  49. />/yyyy_mm_dd.request.log</Set>
  50. <Set name="filenameDateFormat">yyyy_MM_dd</Set>
  51. <Set name="retainDays">90</Set>
  52. <Set name="append">true</Set>
  53. <Set name="extended">true</Set>
  54. <Set name="logCookies">false</Set>
  55. <Set name="LogTimeZone">GMT</Set>
  56. </New>
  57. </Set>
  58. </Ref>
  59. <Set name="stopAtShutdown">true</Set>
  60. <Set name="sendServerVersion">true</Set>
  61. <Set name="sendDateHeader">true</Set>
  62. <Set name="gracefulShutdown">1000</Set>
  63. </Configure>

字面就很好理解吧?看完了上面的你啥类都可以先不写,可以进入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. }
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代码 复制代码 收藏代码
  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();
	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 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jetty 欢迎访问Jetty文档 Wiki. Jetty是一个开源项目,提供了http服务器、http客户端和java servlet容器。 这个wiki提供jetty的入门教程、基础配置、功能特性、优化、安全、JavaEE、监控、常见问题、故障排除帮助等等。它包含教程、使用手册、视频、特征描述、参考资料以及常见问题。 Jetty文档 ---------------- 入门: 下载Download, 安装, 配置, 运行 Jetty入门(视频) 下载和安装Jetty 如何安装一个Jetty包 如何配置Jetty – 主要文档 如何运行Jetty 用JConsole监控Jetty 如何使用Jetty开发 Jetty HelloWorld教程 Jetty和Maven HelloWorld教程 Jetty(6)入门 (www.itjungle.com) Jetty Start.jar 配置Jetty 如何设置上下文(Context Path) 如何知道使用了那些jar包 如何配置SSL 如何使用非root用户监听80端口 如何配置连接器(Connectors) 如何配置虚拟主机(Virtual Hosts) 如何配置会话ID(Session IDs) 如何序列化会话(Session) 如何重定向或移动应用(Context) 如何让一个应用响应一个特定端口 使用JNDI 使用JNDI 在JNDI中配置数据源(DataSource) 内嵌Jetty服务器 内嵌Jetty教程 内嵌Jetty的HelloWorld教程 内嵌Jetty视频 优化Jetty 如何配置垃圾收集 如何配置以支持高负载 在Jetty中部署应用 部署管理器 部署绑定 热部署 Context提供者 如何部署web应用 webApp提供者 如何部署第三方产品 部署展开形式的web应用 使用Jetty进行开发 如何使用Jetty进行开发 如何编写Jetty中的Handlers 使用构建工具 如何在Maven中使用Jetty 如何在Ant中使用Jetty Maven和Ant的更多支持 Jetty Maven插件(Plugin) Jetty Jspc Maven插件(Plugin) Maven web应用工程原型 Ant Jetty插件(Plugin) 使用集成开发环境(IDEs) 在Eclipse中使用Jetty 在IntelliJ中使用Jetty 在Eclipse中工作 在Eclipse中开发Jetty Jetty WTP插件(Plugin) JettyOSGi SDK for Eclipse-PDE EclipseRT Jetty StarterKit SDK OSGi Jetty on OSGi, RFC66 基于Jetty OSGi的产品 OSGi贴士 Equinox中使用Jetty实现HTTP Service Felix中使用Jetty实现HTTP Service PAX中使用Jetty实现HTTP Srevice ProSyst mBedded Server Equinox Edition Spring Dynamic Modules里的Jetty JOnAS5里的Jetty 配置Ajax、Comet和异步Servlets 持续和异步Servlets 100 Continue和102 Processing WebSocket Servlet 异步的REST Stress Testing CometD 使用Servlets和Filters Jetty中绑定的Servlets Quality of Service Filter Cross Origin Filter 配置安全策略(Security Policies) 安全领域(Security Realms) 安全域配置教程 Java Authentication and Authorization Service (JAAS) JAAS配置教程 JASPI 安全模型(Secure Mode) 存储在文件中的安全密码以及编程教程 如何开启或禁止Jetty中的SSL功能 如何在Jetty中安全存储密码 如何安全终止Jetty 如何配置Spnego Application Server Integrations(集成) Apache Geronimo JEE 配置Apache httpd和Jetty教程 配置Apache mod_proxy和Jetty 配置Jetty中的AJP13 在JBoss中配置Jetty Remote Glassfish EJBs from Jetty Jetty and Spring EJB3 (Pitchfork) JBoss EJB3 ObjectWeb EasyBeans
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值