Bereitstellen von JSF 2.1 webapp in Oracle Weblogic 12.1?
Ich versuche zum bereitstellen von JSF 2.1 webapplication auf einem Weblogic 12.1 application server, aber die Bereitstellung fehlschlägt, mit der folgenden Ausnahme
<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
Ich bin mit der Implementierung Mojarra Version 2.1.13 - hier ist die entsprechende pom.xml
Eintrag:
<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>
Habe ich noch folgende Zeilen an das weblogic.xml
um zu verhindern, dass der weblogic server von dem laden die mitgelieferten jsf-Implementierung:
<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>
Den WeblogicFacesConfigResourceProvider
enthalten ist, in der weblogic.jar
.
So, was läuft hier falsch? - Irgendwelche Tipps?
Lösung
Okay, ich habe die Lösung gefunden: Sie haben zum hinzufügen von META-INF/services/com.sun.faces.spi.FacesConfigResourceProvider
zu den prefer-application-resources
-Abschnitt in der weblogic.xml
. Diese Konfiguration funktioniert bei mir:
false
javax.Gesichter.
com.Sonne.Gesichter.
com.bea.Gesichter.*
<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>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen der Lösung erwähnt
oehmiche
in seiner Frage als eine Antwort.Fügen Sie den META-INF/services/com.Sonne.Gesichter.spi.FacesConfigResourceProvider der prefer-application-Ressourcen-Abschnitt in der weblogic.xml. Diese Konfiguration funktioniert bei mir: false javax.Gesichter. com.Sonne.Gesichter. com.bea.Gesichter.*
Zusätzlich zu oemiche's Lösung: Auf WebLogic 12c R2 (12.2), müssen Sie das überschreiben der jsf.js aus WegLogic ist glassfish.jar (JSF 2.2):
Setzen Sie die folgenden in prefer-application-Ressourcen nach ...FacesConfigResourceProvider:
Müssen Sie diese zu weblogic-application.xml wenn Sie die Bereitstellung Ihrer Anwendung als ein Ohr.