5

JSF 2.1 Web アプリケーションを Weblogic 12.1 アプリケーション サーバーにデプロイしようとしていますが、次の例外でデプロイが失敗します。

<javax.enterprise.resource.webcontainer.jsf.config> <BEA-000000> 
<Critical error during deployment:
 com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! 
    com.oracle.injection.integration.jsf.WeblogicFacesConfigResourceProvider
                     cannot be cast to com.sun.faces.spi.ConfigurationResourceProvider
    at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:377)
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:223)
    at weblogic.servlet.internal.EventsManager$FireContextListenerAction.run(EventsManager.java:582)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
    Truncated. see log file for complete stacktrace

Mojarra 実装バージョン 2.1.13 を使用しています。対応するpom.xmlエントリは次のとおりです。

<dependency>
  <groupId>com.sun.faces</groupId>
  <artifactId>jsf-api</artifactId> 
  <version>2.1.13</version>
</dependency>
<dependency>
  <groupId>com.sun.faces</groupId>
  <artifactId>jsf-impl</artifactId>
  <version>2.1.13</version>
</dependency>

に次の行を追加してweblogic.xml、WebLogic サーバーが出荷された jsf 実装をロードしないようにしました。

<container-descriptor>
    <prefer-web-inf-classes>false</prefer-web-inf-classes>
    <prefer-application-packages>
        <package-name>javax.faces.*</package-name>
        <package-name>com.sun.faces.*</package-name>
        <package-name>com.bea.faces.*</package-name>
    </prefer-application-packages>

    <prefer-application-resources>
        <resource-name>javax.faces.*</resource-name>
        <resource-name>com.sun.faces.*</resource-name>
        <resource-name>com.bea.faces.*</resource-name>
        <resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
    </prefer-application-resources>
</container-descriptor>

WeblogicFacesConfigResourceProviderに含まれていweblogic.jarます。

それで、ここで何がうまくいかないのですか?- 何かヒントはありますか?


解決

わかりました、解決策を見つけました:META-INF/services/com.sun.faces.spi.FacesConfigResourceProviderprefer-application-resources-section にを追加する必要がありweblogic.xmlます。この構成は私にとってはうまくいきます: false javax.faces. com.sun.faces. com.bea.faces.*

    <prefer-application-resources>
        <resource-name>javax.faces.*</resource-name>
        <resource-name>com.sun.faces.*</resource-name>
        <resource-name>com.bea.faces.*</resource-name>
        <resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
        <resource-name>META-INF/services/com.sun.faces.spi.FacesConfigResourceProvider</resource-name>
    </prefer-application-resources>
</container-descriptor>
4

2 に答える 2

8

oehmiche彼の質問で言及されている解決策を答えとして追加します。

META-INF/services/com.sun.faces.spi.FacesConfigResourceProvider を weblogic.xml の prefer-application-resources-section に追加します。この構成は私にとってはうまくいきます: false javax.faces. com.sun.faces. com.bea.faces.*

<prefer-application-resources>
    <resource-name>javax.faces.*</resource-name>
    <resource-name>com.sun.faces.*</resource-name>
    <resource-name>com.bea.faces.*</resource-name>
    <resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
    <resource-name>META-INF/services/com.sun.faces.spi.FacesConfigResourceProvider</resource-name>
</prefer-application-resources>

于 2012-10-15T17:52:48.610 に答える
2

oemicheのソリューションへの追加: WebLogic 12c R2 (12.2) では、WegLogic の glassfish.jar (JSF 2.2) からの jsf.js をオーバーライドする必要があります

<resource-name>META-INF/resources/javax.faces/jsf.js</resource-name>

アプリケーションを ear としてデプロイする場合は、これを weblogic-application.xml に追加する必要があります。

于 2016-10-26T07:45:57.030 に答える