以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(); } }
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(); } }
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(); } }
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(); } }