[英]ResourceHandler stop hosting files with jetty 9 - 404 not found error (works fine with jetty 8)
Apparently, ResourceHandler
stop hosting files with jetty 9 - 404 not found error (works fine with jetty 8).显然,
ResourceHandler
停止托管带有 jetty 9 - 404 not found 错误的文件(适用于 jetty 8)。 Here is the code:这是代码:
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();
This quistion with the accepted answer does not seem to work against jetty 9 - Serving static files w/ embedded Jetty这个带有接受答案的问题似乎不适用于jetty 9 - Serving static files w/embedded Jetty
Assuming that servletHandler
is a ServletContextHandler
假设
servletHandler
是一个ServletContextHandler
(Note: it best not be an actual ServletHandler
, as that's an internal class, not meant to be instantiated directly) (注意:它最好不是一个实际的
ServletHandler
,因为它是一个内部类,不打算直接实例化)
Then the resourceHandler
will never be called, as the DefaultServlet
processing (or Default404Servlet
) at the end of the ServletContextHandler
chain will always respond, not allowing resourceHandler
to even execute.那么
resourceHandler
将永远不会被调用,因为ServletContextHandler
链末尾的DefaultServlet
处理(或Default404Servlet
)将始终响应,甚至不允许resourceHandler
执行。
If you have a ServletContextHandler
, do not use ResourceHandler
use the DefaultServlet
in that ServletContextHandler
to setup and serve your static files.如果您有
ServletContextHandler
,请不要使用ResourceHandler
使用该ServletContextHandler
的DefaultServlet
来设置和提供您的静态文件。
In case somebody is looking for a working example, this is how I combined a ResourceHandler with a ContextHandler (partially based on current Jetty docs: Jetty documentation )如果有人正在寻找一个工作示例,这就是我将 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.