通过以下代码,我可以在/处提供我的 View ,并在/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);
}
最佳答案
这是我想出的解决方案。它需要 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);
}
关于java - 使用嵌入式 Jetty 在根上下文中提供 index.html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44379800/