可爱的Jetty - tomcat的可能终结者
有机会开始接触了一下Jetty,发现果然是好用,有一种相见恨晚的感觉,听说现在Google的Java web容器已经都专用jetty。
这源于Jetty的插件似的特点,而且Jetty可以像一个简单的POJO写在程序中,就像他的口号中所说的那样,“Don't deploy your application in Jetty, deploy Jetty in your application”,"不要让你的程序部署到Jetty中,让我们Jetty嵌入到你们的程序中"。
Jetty的高扩展性也是其发展迅速的另一个重要的特点,Jetty不仅仅提供了很多好用的插件,比如ip过滤、日志记录、请求日志、代理服务器、rewrite、ssl等,这些都可以通过简单的配置一个配置文件,然后再启动参数中加入该配置文件即可轻松实现。
哦,还有一点,Jetty实现了独特的推模式,这个虽然还没有用,但是了解了一下他的实现方式,性能方便还是不错的。。
下面简单的谈谈Jetty的使用:
Wepapps Deployment 这也是我们平常最常用的部署方式,好像是在嵌入式服务器出现之前唯一的部署方式。跟一般的web容器一样Jetty在根目录下面也有一个webapps目录,在jetty启动之前会扫描该目录:
如果有foo.war,则jetty会把程序发布到/foo下
如果webapps下面有foo文件夹,也会发布到foo/下
如果同时存在一个foo文件夹和一个foo.war,则会判断两者的修改时间,选择最新的进行部署
如果是root.war则会直接部署到根目录下。。。这个好像跟tomcat差不多,呵呵
Embedded Usage 这个是这里喜欢Jetty的最主要的原因了,嵌入式,只需要将jetty的jar包copy到程序中,然后就可以使用 Server server = new Server(8080); server.start();启动服务了,就是这么简单,是不是有些惊讶呢,当然如果你有一些特殊的需求,可以对server进行一些配置。
下面是我部署程序是用到的java代码
[code="java"] String webapp = "D:/****"; // 程序存放的位置
server = new Server(8080);
WebAppContext appcontext = new WebAppContext();
appcontext.setDescriptor(webapp + "/WEB-INF/web.xml");
appcontext.setResourceBase(webapp);
appcontext.setContextPath("/");
appcontext.setParentLoaderPriority(true);
server.setHandler(appcontext);
try {
server.start();
} catch (Exception e) {
e.printStackTrace();
}
哈哈,就是这么简单。。。。
server.stop();关闭服务了。。。。。