李成笔记网

专注域名、站长SEO知识分享与实战技巧

Java,SpringBoot,Jetty应用,同时支持Tomcat和Jetty容器

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;
    }

}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言