【发布时间】:2017-05-02 03:17:41
【问题描述】:
我的 WAR 应用程序使用非 Spring 库(用于 JSF)。该库使用servletContext.getResource("page.html") 进行初始化。 page.html 在 WEB-INF/lib 的 JAR 中,打包为 META-INF/resources/page.html
当我在 servlet 容器上部署 WAR 时效果很好。但是当我将应用程序作为可执行 WAR 运行时,它不起作用,因为嵌入式 servlet 容器不扫描类路径 META-INF/资源。
例如不使用 Undertow 类路径资源管理器:
private ResourceManager getDocumentRootResourceManager() {
File root = getCanonicalDocumentRoot();
if (root.isDirectory()) {
return new FileResourceManager(root, 0);
}
if (root.isFile()) {
return new JarResourceManager(root);
}
return ResourceManager.EMPTY_RESOURCE_MANAGER;
}
提问时间:为什么嵌入式 servlet 容器会忽略 META-INF/resources?制作可执行的 Servlet 3.0 应用程序是个问题。
类似问题:
Embedded Tomcat, executable jar, ServletContext.getRealPath()
【问题讨论】:
-
我用过很多spring boot,之前还没有听说过可执行的war。我想知道这是如何支持的。
标签: spring-boot