用户工具

站点工具


about_jetty_10

Jetty的那些事儿 第十章:内嵌Jetty应用开发实战

作者:陈科

联系方式:chenke1818@gmail.com

转载请说明出处:http://www.dumpcache.com/wiki/doku.php?id=about_jetty_10

Jetty在先天设计的时候,就给程序员在扩展上留下了足够的spi,所以,我们完全可以把自己的代码无缝的嵌入到jetty中去,甚至脱离jetty的配置文件。

我们先来看下jetty内嵌相关的类图结构:

然后我们来开发一个实例演示一下: 我们先来定义一个配置类:

public class WebConfig {

    public static Map<String, ServletHolder> servletConfig = new HashMap<String, ServletHolder>();
    public static String[] welcomeFiles  = { "index.html" };
    static {
        servletConfig.put("/console/*", new ServletHolder(ERServlet.class));
        servletConfig.put("/manager/*", new ServletHolder(ERServlet.class));
    }

}

接着创建Server:

Server server = new Server(8080);

SelectChannelConnector sc = (SelectChannelConnector) server.getConnectors()[0];
        sc.setAcceptors(1);
        sc.setMaxIdleTime(100);
        int maxThreads = 100;
        int minThreads = maxThreads;
        QueuedThreadPool pool = new QueuedThreadPool(maxThreads);
        pool.setMinThreads(minThreads);
        server.setThreadPool(pool);

然后初始化handler:

HandlerCollection hc = new HandlerCollection();
        ServletHandler sh = new ServletHandler();
        ResourceHandler rh = new ResourceHandler();
        rh.setDirectoriesListed(false);
        rh.setWelcomeFiles(new String[] { "index.html" });
        rh.setResourceBase(resourceBase);
        Map<String, ServletHolder> servletConfig = WebConfig.servletConfig;
        Set<Map.Entry<String, ServletHolder>> set = servletConfig.entrySet();
        for (Map.Entry<String, ServletHolder> e : set) {
            sh.addServletWithMapping(e.getValue(), e.getKey());
        }
        
        hc.addHandler(sh);
        hc.addHandler(rh);
        server.setHandler(hc);

最后启动server:

server.start();
server.join();

一个内嵌jetty的开发工作就完成了,这里我们没有使用任何的配置,简单吧^_^

about_jetty_10.txt · 最后更改: 2018/10/14 15:31 (外部编辑)