JETTY
来自站长百科
(重定向自Jetty)
Jetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
Jetty的特性[ ]
- 易用性
易用性是 Jetty 设计的基本原则,易用性主要体现在以下几个方面:
- 通过 XML 或者 API 来对 Jetty 进行配置;
- 默认配置可以满足大部分的需求;
- 将 Jetty 嵌入到应用程序当中只需要非常少的代码;
- 可扩展性
在使用了 Ajax 的 Web 2.0 的应用程序中,每个连接需要保持更长的时间,这样线程和内存的消耗量会急剧的增加。这就使得担心整个程序会因为单个组件陷入瓶颈而影响整个程序的性能。但是有了 Jetty:
- 即使在有大量服务请求的情况下,系统的性能也能保持在一个可以接受的状态。
- 利用 Continuation 机制来处理大量的用户请求以及时间比较长的连接。
- 另外 Jetty 设计了非常良好的接口,因此在 Jetty 的某种实现无法满足用户的需要时,用户可以非常方便地对 Jetty 的某些实现进行修改,使得 Jetty 适用于特殊的应用程序的需求
- 易嵌入性
Jetty 设计之初就是作为一个优秀的组件来设计的,这也就意味着 Jetty 可以非常容易的嵌入到应用程序当中而不需要程序为了使用 Jetty 做修改。从某种程度上,你也可以把 Jetty 理解为一个嵌入式的Web服务器。
Jetty 可以作为嵌入式服务器使用,Jetty的运行速度较快,而且是轻量级的,可以在Java中可以从test case中控制其运行。从而可以使自动化测试不再依赖外部环境,顺利实现自动化测试。
作为嵌入式服务器使用代码实例:
Java代码
//代码:以嵌入模式启动Jetty import org.mortbay.http.HttpContext; import org.mortbay.http.HttpServer; import org.mortbay.http.SocketListener; import org.mortbay.http.handler.ResourceHandler; public class JettySample { public static void main(String[] args) throws Exception { // 创建Jetty HttpServer对象 HttpServer server = new HttpServer(); // 在端口8080上给HttpServer对象绑上一个listener,使之能够接收HTTP请求 SocketListener listener = new SocketListener(); listener.setPort(8080); server.addListener(listener); // 创建一个HttpContext,处理HTTP请求。 HttpContext context = new HttpContext(); // 用setContextPath把Context映射到(/web)URL上。 context.setContextPath("/web"); // setResourceBase方法设置文档目录以提供资源 context.setResourceBase("C:\\j2sdk1.4.1_05"); // 添加资源处理器到HttpContext,使之能够提供文件系统中的文件 context.addHandler(new ResourceHandler()); server.addContext(context); // 启动服务器 server.start(); } }
jetty需要的jar包[ ]
- commons-logging.jar
- javax.servlet.jar
- org.mortbay.jetty.jar
- org.mortbay.jmx.jar
jetty对应的maven插件[ ]
maven pom文件的设置:
<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.1.10</version> <configuration> <scanIntervalSeconds>10</scanIntervalSeconds> <stopKey>foo</stopKey> <stopPort>9999</stopPort> </configuration> <executions> <execution> <id>start-jetty</id> <phase>pre-integration-test</phase> <goals> <goal>run</goal> </goals> <configuration> <scanIntervalSeconds>0</scanIntervalSeconds> <daemon>true</daemon> </configuration> </execution> <execution> <id>stop-jetty</id> <phase>post-integration-test</phase> <goals> <goal>stop</goal> </goals> </execution> </executions> </plugin>