簡體   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