2016-12-16 17 views
2

私のWARアプリケーションはSpring以外のライブラリ(JSF用)を使用します。ライブラリはservletContext.getResource("page.html")を使用して初期化されます。 page.htmlは、WEB-INF/libのJAR内にあり、META-INF/resources/page.html埋め込みサーブレットコンテナは、SpringブートでMETA-INF /リソースを処理しません。

としてパッケージ化されています。これは、サーブレットコンテナにWARをデプロイすると優れています。しかし、実行可能なWARとしてアプリケーションを実行すると、埋め込みサーブレットコンテナがクラスパスMETA-INF/resourcesをスキャンしないため、動作しません。アンダートウクラスパス・リソース・マネージャのための例えば

が使用されていません。質問の

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; 
} 

https://github.com/spring-projects/spring-boot/blob/master/spring-boot/src/main/java/org/springframework/boot/context/embedded/undertow/UndertowEmbeddedServletContainerFactory.java#L466

時間:なぜ組み込みサーブレットコンテナはMETA-INF/resourcesを無視しますか?実行可能なサーブレット3.0アプリケーションを作成することは問題です。

同様の問題:

Embedded Tomcat, executable jar, ServletContext.getRealPath()

https://github.com/spring-projects/spring-boot/issues/4218

+0

私は春のブートを多く使用していますが、以前は実行可能な戦争について聞いていませんでした。それがどのようにサポートされているのだろうか。 – eis

答えて

1

は、私は次のように構成された私の問題を解決しました:

@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コンテナがどのように動作するかを組み込みunderdocumentedされていることを考えます。春のブートの開発者は埋め込まれたWebコンテナがアプリケーションの機能のいくつかのサブセットを提供する場合、幸せです既存のアプリケーションを移行する人は、組み込みコンテナが定期的なコンテナのすべての機能を提供します。例えば、ServletContainerInitializersは埋め込みでは無視されます。https://github.com/spring-projects/spring-boot/issues/321

関連する問題