jetty嵌入式使用方法
以jetty-hightide-8.1.6.v20120903版本为例,1.文件服务器
package com.chinahrt.zyn.jetty;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.DefaultHandler;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.server.handler.ResourceHandler;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
public class FileServer {
public static void main(String args[]) throws Exception{
Server server = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(8080);
server.addConnector(connector);
ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setDirectoriesListed(true);
resource_handler.setWelcomeFiles(new String[]{"index.html"});
resource_handler.setResourceBase(".");
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[]{resource_handler,new DefaultHandler()});
server.setHandler(handlers);
server.start();
server.join();
}
}
访问路径:http://localhost:8080
2.从xml创建服务器,src放fileServer.xml
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="FileServer" class="org.eclipse.jetty.server.Server">
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<Set name="port">8080</Set>
</New>
</Arg>
</Call>
<Set name="handler">
<New class="org.eclipse.jetty.server.handler.HandlerList">
<Set name="handlers">
<Array type="org.eclipse.jetty.server.Handler">
<Item>
<New class="org.eclipse.jetty.server.handler.ResourceHandler">
<Set name="directoriesListed">true</Set>
<Set name="welcomeFiles">
<Array type="String"><Item>index.html</Item></Array>
</Set>
<Set name="resourceBase">.</Set>
</New>
</Item>
<Item>
<New class="org.eclipse.jetty.server.handler.DefaultHandler">
</New>
</Item>
</Array>
</Set>
</New>
</Set>
</Configure>
package com.chinahrt.zyn.jetty;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.util.resource.Resource;
import org.eclipse.jetty.xml.XmlConfiguration;
public class FileServerXml {
public static void main(String[] args) throws Exception{
Resource fileserver_xml = Resource.newSystemResource("fileServer.xml");
XmlConfiguration configuration = new XmlConfiguration(fileserver_xml.getInputStream());
Server server = (Server)configuration.configure();
server.start();
server.join();
}
}
访问路径http://localhost:8080/
3.servlet
package com.chinahrt.zyn.jetty;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
public class OneServletContext {
/**
* @param args
* Administrator
* 2012-9-12 下午1:12:10
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
server.setHandler(context);
context.addServlet(new ServletHolder(new HelloServlet()), "/*");
context.addServlet(new ServletHolder(new HelloServlet("Buongiorno Mondo")), "/it/*");
context.addServlet(new ServletHolder(new HelloServlet("Bonjour le monde")), "/fr/*");
server.start();
server.join();
}
}
package com.chinahrt.zyn.jetty;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloServlet extends HttpServlet {
private String greeting="Hello World";
public HelloServlet(){}
public HelloServlet(String greeting){
this.greeting = greeting;
}
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException
{
response.setContentType("text/html");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().println("<h1>"+greeting+"</h1>");
response.getWriter().println("session="+request.getSession(true).getId());
}
}
访问路径:http://localhost:8080/,http://localhost:8080/it,http://localhost:8080/fr
4
package com.chinahrt.zyn.junit.chapter6;
import java.io.IOException;
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 {
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);
response.getWriter().println("<h1>Hello World</h1>");
response.getWriter().println("Request url:"+target);
}
}
package com.chinahrt.zyn.jetty;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandler;
import com.chinahrt.zyn.junit.chapter6.HelloHandler;
public class OneContext {
/**
* @param args
* Administrator
* 2012-9-12 下午12:57:47
*/
public static void main(String[] args) throws Exception{
Server server = new Server(8080);
ContextHandler context = new ContextHandler();
context.setContextPath("/hello");
context.setResourceBase(".");
context.setClassLoader(Thread.currentThread().getContextClassLoader());
server.setHandler(context);
context.setHandler(new HelloHandler());
server.start();
server.join();
}
}
访问路径:http://localhost:8080/hello
5.war包
package com.chinahrt.zyn.jetty;
import org.eclipse.jetty.security.ConstraintSecurityHandler;
import org.eclipse.jetty.security.HashLoginService;
import org.eclipse.jetty.security.SecurityHandler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;
public class OneWebApp {
/**
* @param args
* Administrator
* 2012-9-12 下午1:23:26
*/
public static void main(String[] args) throws Exception{
String jetty_home=System.getProperty("jetty.home","F:\\book\\开源项目\\jetty-hightide-8.1.6.v20120903\\jetty-hightide-8.1.6.v20120903");
Server server = new Server(8080);
WebAppContext webapp = new WebAppContext();
SecurityHandler securityHandler = new ConstraintSecurityHandler();
HashLoginService loginService = new HashLoginService();
loginService.setName("Realm");
securityHandler.setLoginService(loginService);
webapp.setSecurityHandler(securityHandler);
webapp.setContextPath("/");
webapp.setWar(jetty_home+"/webapps/test.war");
server.setHandler(webapp);
server.start();
server.join();
}
}
url:http://localhost:8080
6.多个部署
package com.chinahrt.zyn.jetty;
import org.eclipse.jetty.security.ConstraintSecurityHandler;
import org.eclipse.jetty.security.HashLoginService;
import org.eclipse.jetty.security.SecurityHandler;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.webapp.WebAppContext;
public class ManyContexts {
/**
* @param args
* Administrator
* 2012-9-12 下午1:35:10
*/
public static void main(String[] args) throws Exception{
Server server = new Server(8080);
ServletContextHandler context0 = new ServletContextHandler(ServletContextHandler.SESSIONS);
context0.setContextPath("/ctx0");
context0.addServlet(new ServletHolder(new HelloServlet()), "/*");
context0.addServlet(new ServletHolder(new HelloServlet("buongiorno")),"/it/*");
context0.addServlet(new ServletHolder(new HelloServlet("bonjour le Monde")),"/fr/*");
WebAppContext webapp = new WebAppContext();
String jetty_home=System.getProperty("jetty.home","F:\\book\\开源项目\\jetty-hightide-8.1.6.v20120903\\jetty-hightide-8.1.6.v20120903");
webapp.setContextPath("/ctx1");
webapp.setWar(jetty_home+"/webapps/test.war");
SecurityHandler securityHandler = new ConstraintSecurityHandler();
HashLoginService loginService = new HashLoginService();
loginService.setName("Realm");
securityHandler.setLoginService(loginService);
webapp.setSecurityHandler(securityHandler);
ContextHandlerCollection contexts = new ContextHandlerCollection();
contexts.setHandlers(new Handler[] { context0, webapp });
server.setHandler(contexts);
server.start();
server.join();
}
}
url:http://localhost:8080/ctx1/ http://localhost:8080/ctx0/
7
package com.chinahrt.zyn.jetty;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.server.ssl.SslSelectChannelConnector;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
import com.chinahrt.zyn.junit.chapter6.HelloHandler;
public class ManyConnectors {
public static void main(String[] args) throws Exception{
Server server = new Server();
SelectChannelConnector connector0 = new SelectChannelConnector();
connector0.setPort(8080);
connector0.setMaxIdleTime(30000);
connector0.setRequestHeaderSize(8192);
SelectChannelConnector connector1 = new SelectChannelConnector();
connector1.setHost("127.0.0.1");
connector1.setPort(8888);
connector1.setThreadPool(new QueuedThreadPool(20));
connector1.setName("/admin");
SslSelectChannelConnector ssl_connector = new SslSelectChannelConnector();
//String jetty_home = System.getProperty("jetty.home", "../jetty-distribution/target/distribution");
String jetty_home = System.getProperty("jetty.home","F:\\book\\开源项目\\jetty-hightide-8.1.6.v20120903\\jetty-hightide-8.1.6.v20120903");
System.setProperty("jetty.home", jetty_home);
ssl_connector.setPort(8443);
org.eclipse.jetty.util.ssl.SslContextFactory cf = ssl_connector.getSslContextFactory();
cf.setKeyStore(jetty_home+"/etc/keystore");
cf.setKeyStorePassword("OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4");
cf.setKeyManagerPassword("OBF:1u2u1wml1z7s1z7a1wnl1u2g");
server.setConnectors(new Connector[]{ connector0, connector1, ssl_connector });
server.setHandler(new HelloHandler());
server.start();
server.join();
}
}
https://localhost:8443/ http://localhost:8888/
页:
[1]