Jetty(http://www.eclipse.org/jetty/)是一个基于 Java 的 HTTP 服务器和 Java Servlet 容器,它由 Eclipse 基金会维护。
除了自身是 Eclipse IDE 的一部分,它还被用在很多产品中,比如 ActiveMQ、 Maven、 Google App Engine 和 Hadoop。
它不仅仅是一个 Web 服务器,它还支持 Java Servlet API、 SPDY 和 WebSocket 协议。
因为这么多项目中都用到了它,很多开发者至少知道它的存在和功能。
但是,很少人知道它可以容易地作为一个组件嵌入一个定制的 Java 服务器。
代码举例:
package com.saternos.embedded;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class JsonHandler extends AbstractHandler {
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("application/json;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
response.getWriter().println("{\"testResponse\":\"Hello World\"}");
}
}
package com.saternos.embedded;
import org.eclipse.jetty.server.Server;
public class TestJettyHttpServer {
public static void main(String[] args) throws Exception {
Server server = new Server(8000);
server.setHandler(new JsonHandler());
System.out.println("Starting server on port: " + 8000);
server.start();
server.join();
}
}
POM文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.myself</groupId>
<artifactId>temp-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>temp-demo</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>8.1.0.RC5</version>
</dependency>
</dependencies>
</project>