繁体   English   中英

ResourceHandler 停止托管带有 jetty 9 的文件 - 404 not found 错误(适用于 jetty 8)

[英]ResourceHandler stop hosting files with jetty 9 - 404 not found error (works fine with jetty 8)

显然, ResourceHandler停止托管带有 jetty 9 - 404 not found 错误的文件(适用于 jetty 8)。 这是代码:

    ResourceHandler resourceHandler = new ResourceHandler();
    resourceHandler.setDirectoriesListed(true);
    resourceHandler.setResourceBase("some_resource_base");

    HandlerList handlerList = new HandlerList();
    handlerList.setHandlers(new Handler[]{servletHandler, resourceHandler});
    server.setHandler(handlerList);
    server.start();

这个带有接受答案的问题似乎不适用于jetty 9 - Serving static files w/embedded Jetty

假设servletHandler是一个ServletContextHandler

(注意:它最好不是一个实际的ServletHandler ,因为它是一个内部类,不打算直接实例化)

那么resourceHandler将永远不会被调用,因为ServletContextHandler链末尾的DefaultServlet处理(或Default404Servlet )将始终响应,甚至不允许resourceHandler执行。

如果您有ServletContextHandler ,请不要使用ResourceHandler使用该ServletContextHandlerDefaultServlet来设置和提供您的静态文件。

如果有人正在寻找一个工作示例,这就是我将 ResourceHandler 与 ContextHandler 结合的方式(部分基于当前的 Jetty 文档: Jetty 文档

        srv = new Server();
        ServerConnector srvConn = new ServerConnector(srv);
        srvConn.setHost("localhost");
        srvConn.setPort(8080);
        srvConn.setIdleTimeout(30000);
        srv.addConnector(srvConn);
        //used for webSocket comm later:
        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
        context.setContextPath("/");

        //for static  content:
        ResourceHandler resH = new ResourceHandler();
        resH.setDirectoriesListed(true);
        resH.setWelcomeFiles(new String[]{ "index.html" });
        resH.setResourceBase("./my/web/root");
        ContextHandler resCtx = new ContextHandler();
        resCtx.setHandler(resH);

        //Add both ContextHandlers to server:
        ContextHandlerCollection handlers = new ContextHandlerCollection(resCtx, context);
        srv.setHandler(handlers);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM