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/ithttp://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/

猜你喜欢

转载自zyn010101.iteye.com/blog/1679798
今日推荐