[英]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
使用該ServletContextHandler
的DefaultServlet
來設置和提供您的靜態文件。
如果有人正在尋找一個工作示例,這就是我將 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.