jetty7
使用jetty作为嵌入式web服务器非常简单,而且jetty非常小,启动很快。jetty6的包结构是org.mortbay.jetty.*,到jetty7这个项目已经属于eclipse了,包结构是org.eclipse.jetty.*。
导入jetty安装目录lib下的jar包后,启动一个jetty服务器可以这样写:
public class SimplestServer
{
public static void main(String[] args) throws Exception
{
Server server = new Server(8080);
server.start();
server.join();
}
}
这样可以启动一个http服务,但使用返回的是404错误,因为没有处理器来处理指向这个http服务的请求。处理器的编写如下:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
public class HelloHandler extends AbstractHandler {
/**
* jetty 7
*/
@Override
public void handle(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
//System.out.println("响应请求");
PrintWriter writer = response.getWriter();
writer.println("<html>");
writer.println("<h1>Hello World</h1>");
writer.println("</html>");
}
}
嵌入服务器:
import org.eclipse.jetty.server.Server;
public class JettySample {
public static void main(String[] args) {
Server server = new Server(8080);
server.setHandler(new HelloHandler());
try {
server.start();
server.join();
} catch (Exception e) {
e.printStackTrace();
}
}
}
更详细的用法参考:http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty
tomcat6
准备一份tomcat,解压到目录E:/embeddedtomcat/。
嵌入tomcat6,需要导入tomcat安装目录下lib目录中的jar包,另外还需导入tomcat安装目录下bin目录中的tomcat-juli.jar包。编码如下:
import java.net.InetAddress;
import org.apache.catalina.Context;
import org.apache.catalina.Engine;
import org.apache.catalina.Host;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Embedded;
public class EmbeddedTomcat6 {
private String path = null;
private Embedded embedded = null;
private Host host = null;
public EmbeddedTomcat6() {
}
/** 设置Tomcat的根路径 */
public void setPath(String path) {
this.path = path;
}
/** 返回Tomcat的根路径 */
public String getPath() {
return path;
}
/** 启动Tomcat服务器 */
public void startTomcat() throws Exception {
Engine engine = null;
// 设置catalina.home系统属性
System.setProperty("catalina.home", getPath());
// 创建嵌入式Tomcat服务器
embedded = new Embedded();
// 创建Engine实例
engine = embedded.createEngine();
engine.setDefaultHost("localhost");
// 创建默认的Host实例
host = embedded.createHost("localhost", getPath() + "/webapps");
engine.addChild(host);
// 创建ROOT context
Context context = embedded.createContext("", getPath() + "webapps/ROOT");
host.addChild(context);
// 创建examples context
Context examplesContext = embedded.createContext("/examples", getPath()
+ "webapps/examples");
host.addChild(examplesContext);
/****************************************************/
// 创建simple context
//Context simple = embedded.createContext("/simple", getPath() + "webapps/simple");
// 不复制到tomcat下的目录,而使用自定义目录关键在这句
Context simple = embedded.createContext("/simple", "E:/embeddedtomcat/simple");
host.addChild(simple);
/****************************************************/
// 把Engine实例加入到嵌入式Tomcat服务器
embedded.addEngine(engine);
// 创建和安装默认的HTTP connector
InetAddress addr = null;
Connector connector = embedded.createConnector(addr, 8080, false);
embedded.addConnector(connector);
// 启动嵌入式Tomcat服务器
embedded.start();
}
/** 终止嵌入式Tomcat服务器 */
public void stopTomcat() throws Exception {
embedded.stop();
}
public static void main(String args[]) {
try {
EmbeddedTomcat6 tomcat = new EmbeddedTomcat6();
String rootpath = "E:/embeddedtomcat/";
tomcat.setPath(rootpath);
tomcat.startTomcat();
Thread.sleep(1000 * 60 * 5); // 睡眠5分钟
tomcat.stopTomcat();
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}
}
}
tomcat7
相对于tomcat6,嵌入tomcat7就简单多了,同样将tomcat7解压到目录D:/dev/tomcat-7.0.0/,然后编码如下:
import javax.servlet.ServletException;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.startup.Tomcat;
public class EmbeddedTomcat7 {
public static void main(String[] args) throws ServletException, LifecycleException, InterruptedException {
final String CATALINA_HOME = "D:/dev/tomcat-7.0.0/";
Tomcat tomcat = new Tomcat();
tomcat.setBaseDir(CATALINA_HOME);
tomcat.setPort(8080);
tomcat.addWebapp("", "E:/embeddedtomcat/simple");
tomcat.start();
/*
* 不加上这句的话,tomcat运行出现异常程序就会被终止
* 加上了这句后,下面的 tomcat.stop(); 会失效,不会停止tomcat
*/
tomcat.getServer().await();//Keeps Tomcat running until it is shut down
//Thread.sleep(1000 * 3);
//tomcat.stop();
}
}
使用jetty作为嵌入式web服务器非常简单,而且jetty非常小,启动很快。jetty6的包结构是org.mortbay.jetty.*,到jetty7这个项目已经属于eclipse了,包结构是org.eclipse.jetty.*。
导入jetty安装目录lib下的jar包后,启动一个jetty服务器可以这样写:
public class SimplestServer
{
public static void main(String[] args) throws Exception
{
Server server = new Server(8080);
server.start();
server.join();
}
}
这样可以启动一个http服务,但使用返回的是404错误,因为没有处理器来处理指向这个http服务的请求。处理器的编写如下:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
public class HelloHandler extends AbstractHandler {
/**
* jetty 7
*/
@Override
public void handle(String target,Request baseRequest,HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
//System.out.println("响应请求");
PrintWriter writer = response.getWriter();
writer.println("<html>");
writer.println("<h1>Hello World</h1>");
writer.println("</html>");
}
}
嵌入服务器:
import org.eclipse.jetty.server.Server;
public class JettySample {
public static void main(String[] args) {
Server server = new Server(8080);
server.setHandler(new HelloHandler());
try {
server.start();
server.join();
} catch (Exception e) {
e.printStackTrace();
}
}
}
更详细的用法参考:http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty
tomcat6
准备一份tomcat,解压到目录E:/embeddedtomcat/。
嵌入tomcat6,需要导入tomcat安装目录下lib目录中的jar包,另外还需导入tomcat安装目录下bin目录中的tomcat-juli.jar包。编码如下:
import java.net.InetAddress;
import org.apache.catalina.Context;
import org.apache.catalina.Engine;
import org.apache.catalina.Host;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Embedded;
public class EmbeddedTomcat6 {
private String path = null;
private Embedded embedded = null;
private Host host = null;
public EmbeddedTomcat6() {
}
/** 设置Tomcat的根路径 */
public void setPath(String path) {
this.path = path;
}
/** 返回Tomcat的根路径 */
public String getPath() {
return path;
}
/** 启动Tomcat服务器 */
public void startTomcat() throws Exception {
Engine engine = null;
// 设置catalina.home系统属性
System.setProperty("catalina.home", getPath());
// 创建嵌入式Tomcat服务器
embedded = new Embedded();
// 创建Engine实例
engine = embedded.createEngine();
engine.setDefaultHost("localhost");
// 创建默认的Host实例
host = embedded.createHost("localhost", getPath() + "/webapps");
engine.addChild(host);
// 创建ROOT context
Context context = embedded.createContext("", getPath() + "webapps/ROOT");
host.addChild(context);
// 创建examples context
Context examplesContext = embedded.createContext("/examples", getPath()
+ "webapps/examples");
host.addChild(examplesContext);
/****************************************************/
// 创建simple context
//Context simple = embedded.createContext("/simple", getPath() + "webapps/simple");
// 不复制到tomcat下的目录,而使用自定义目录关键在这句
Context simple = embedded.createContext("/simple", "E:/embeddedtomcat/simple");
host.addChild(simple);
/****************************************************/
// 把Engine实例加入到嵌入式Tomcat服务器
embedded.addEngine(engine);
// 创建和安装默认的HTTP connector
InetAddress addr = null;
Connector connector = embedded.createConnector(addr, 8080, false);
embedded.addConnector(connector);
// 启动嵌入式Tomcat服务器
embedded.start();
}
/** 终止嵌入式Tomcat服务器 */
public void stopTomcat() throws Exception {
embedded.stop();
}
public static void main(String args[]) {
try {
EmbeddedTomcat6 tomcat = new EmbeddedTomcat6();
String rootpath = "E:/embeddedtomcat/";
tomcat.setPath(rootpath);
tomcat.startTomcat();
Thread.sleep(1000 * 60 * 5); // 睡眠5分钟
tomcat.stopTomcat();
System.exit(0);
} catch (Exception e) {
e.printStackTrace();
}
}
}
tomcat7
相对于tomcat6,嵌入tomcat7就简单多了,同样将tomcat7解压到目录D:/dev/tomcat-7.0.0/,然后编码如下:
import javax.servlet.ServletException;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.startup.Tomcat;
public class EmbeddedTomcat7 {
public static void main(String[] args) throws ServletException, LifecycleException, InterruptedException {
final String CATALINA_HOME = "D:/dev/tomcat-7.0.0/";
Tomcat tomcat = new Tomcat();
tomcat.setBaseDir(CATALINA_HOME);
tomcat.setPort(8080);
tomcat.addWebapp("", "E:/embeddedtomcat/simple");
tomcat.start();
/*
* 不加上这句的话,tomcat运行出现异常程序就会被终止
* 加上了这句后,下面的 tomcat.stop(); 会失效,不会停止tomcat
*/
tomcat.getServer().await();//Keeps Tomcat running until it is shut down
//Thread.sleep(1000 * 3);
//tomcat.stop();
}
}