Jetty应用
Java开源的servlet容器,web容器。
支持单个Servlet服务:
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
public class JettyApply {
public static void main(String[] args) {
Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
context.setContextPath("/");
server.setHandler(context);
ServletHolder servletHolder = new ServletHolder(new IndexServlet());
context.addServlet(servletHolder, "/index");
try {
server.start();
server.join();
} catch (Exception e) {
e.printStackTrace();
}
}
}
同时支持Tomcat和Jetty容器
要求:必须是AnnotationConfigServletWebServerApplicationContext.class方式启动,WebApplicationContext才能注入,2个容器,同时支持1个DispatcherServlet。
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.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
import javax.servlet.http.HttpServlet;
import java.io.File;
@Configuration
public class MyWebServerConfig {
@Bean(name = "myDispatcherServlet")
public HttpServlet dispatcherServlet(WebApplicationContext applicationContext) {
DispatcherServlet dispatcherServlet = new DispatcherServlet(applicationContext);
dispatcherServlet.setNamespace("my-dispatcher-servlet");
dispatcherServlet.setDispatchOptionsRequest(true);
dispatcherServlet.setDispatchTraceRequest(true);
dispatcherServlet.setThrowExceptionIfNoHandlerFound(true);
return dispatcherServlet;
}
@Bean(name = "jettyServer")
public Server jettyServer(@Qualifier("myDispatcherServlet") HttpServlet dispatcherServlet) {
Server server = new Server(9090);
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
try {
File base = new File(System.getProperty("java.io.tmpdir"));
context.setResourceBase(base.getAbsolutePath());
context.setClassLoader(Thread.currentThread().getContextClassLoader());
ServletHolder servletHolder = new ServletHolder(dispatcherServlet);
context.addServlet(servletHolder, "/*");
//String classpath = "com/what21/demo/webserver/dispatcherServlet.xml";
//servletHolder.setInitParameter("", "classpath:" + classpath);
ContextHandlerCollection contexts = new ContextHandlerCollection();
contexts.setHandlers(new Handler[]{context});
server.setHandler(contexts);
server.start();
// server.join();
} catch (Exception e) {
e.printStackTrace();
}
return server;
}
}