Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 嵌入式servlet容器在Spring引导中不处理META-INF/资源_Spring Boot - Fatal编程技术网

Spring boot 嵌入式servlet容器在Spring引导中不处理META-INF/资源

Spring boot 嵌入式servlet容器在Spring引导中不处理META-INF/资源,spring-boot,Spring Boot,我的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

我的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
?使可执行Servlet3.0应用程序成为一个问题

类似问题:


我通过以下配置解决了问题:

@Bean
public UndertowEmbeddedServletContainerFactory embeddedServletContainerFactory() {
    UndertowEmbeddedServletContainerFactory factory =
    new UndertowEmbeddedServletContainerFactory();
    factory.addDeploymentInfoCustomizers(new UndertowDeploymentInfoCustomizer() {

        @Override
        public void customize(DeploymentInfo deploymentInfo) {
            deploymentInfo.setResourceManager(
                new ClassPathResourceManager(deploymentInfo.getClassLoader(),
                     "META-INF/resources"));
    });
    return factory;
}

一般来说,我认为嵌入式web容器的行为记录不足。Spring Boot开发人员很高兴Embdeded web容器为应用程序提供了一些功能子集,迁移现有应用程序的人希望embedded container提供常规容器的所有功能。例如,ServletContainerInitializers在embedded中被忽略:

我经常使用spring boot,但以前还没有听说过可执行war。我想知道这是如何得到支持的。