jetty使用方法
2016-04-26 23:45
309 查看
jetty的使用
之前都用tomcat的童鞋是不是觉得tomcat很方便啊?但是还有个更方便的web服务器叫jetty,而且它的体积很小,只有几百KB,所以在项目中使用是很方便的。下面来介绍下jetty所必需的一些东西:请注意看他的包结构
![](http://dl.iteye.com/upload/attachment/467885/858d86d3-6d5d-3a10-a284-a04ae6036e92.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代码
![](http://szcs10138456.iteye.com/images/icon_star.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配置里面 如下图
![](http://dl.iteye.com/upload/attachment/467896/bee20cd8-ca53-3a05-91ec-d1fb1331f5e8.jpg)
右击new 一个如下图来配置
![](http://dl.iteye.com/upload/attachment/467899/fd3e9457-7caa-3184-84ad-285e7ea89595.jpg)
![](http://dl.iteye.com/upload/attachment/467903/f4456c94-15da-32c4-af43-c7f6e13c22dd.jpg)
到这里方法1就基本完成了,保存配置 run debug!http://localhost:9090/jettytest 直接去访问吧。
方法2和方法3 都是用java代码来call jetty。
方法2先来:
Java代码
![](http://szcs10138456.iteye.com/images/icon_star.png)
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代码
![](http://szcs10138456.iteye.com/images/icon_star.png)
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
相关文章推荐
- Android基础07—BroadCastReceiver广播
- MySQL 命令大全
- 用py2exe打包成一个exe文件
- IE下JS接受ActiveX控件方法
- 接受屏幕输入转换为大写 via InputStreamReader & System.in
- 20160426作业
- 一定要把英语练好
- gulp入门和使用
- 使用Py2exe将PyQt程序打包为exe文件
- C++第四次作业
- 三个月实习总结
- OCiOS开发:发短信、发邮件、打电话及摇一摇实现
- java发送邮件带url、html
- memset,memcpy,memmove,strcpy,strcat,strcmp的实现(其实很简单,每个程序都只有几行代码)
- 拒绝服务(DoS)攻击
- 初步了解Javascript 闭包
- c++作业4
- c++作业4
- meteor 培训第一天
- 微软实习生面试(一)