使用嵌入式Jetty

时间:2017-06-06 00:51:00

标签: java jetty

使用以下代码,我可以在/ rest以及/ rest的REST API中提供我的视图。目前,我没有使用web.xml。

我可以在/使用Jetty或没有定义web.xml时提供/index.html吗? (这是我正在构建的框架的一部分 - 如果可能的话,我想避免生成文件。)

protected RESTServer(int port, Class<?> api, String path) {
        // Server
        this.server = new org.eclipse.jetty.server.Server(port);

        // REST
        ServletContextHandler restHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
        restHandler.setContextPath(path);

        ServletHolder servlet = restHandler.addServlet(ServletContainer.class, "/rest/*");
        servlet.setInitOrder(0);
        servlet.setInitParameter(JERSEY_PROVIDER, api.getCanonicalName());

         // Web
        ResourceHandler webHandler = new ResourceHandler();
        webHandler.setDirectoriesListed(true);
        webHandler.setResourceBase("src/main/webapp");
        webHandler.setWelcomeFiles(new String[]{"index.html"});

        // Server
        HandlerCollection handlers = new HandlerCollection();
        handlers.addHandler(webHandler);
        handlers.addHandler(restHandler);
        server.setHandler(handlers);
}

1 个答案:

答案 0 :(得分:1)

这是我提出的解决方案。它需要Jetty webapp依赖。

protected RESTServer(int port, Class<?> api, String path) {
        this.server = new org.eclipse.jetty.server.Server(port);
        WebAppContext webAppContext = new WebAppContext();
        webAppContext.setResourceBase("src/main/webapp");
        ServletHolder restServlet = webAppContext.addServlet(ServletContainer.class, "/rest/*");
        restServlet.setInitOrder(0);
        restServlet.setInitParameter(JERSEY_PROVIDER, api.getCanonicalName());
        HandlerCollection handlers = new HandlerCollection();
        handlers.addHandler(webAppContext);
        server.setHandler(handlers);
}