J'ai créé mon projet JSF hello world, mais lorsque je déploie sur Tomcat 7, j'obtiens cette exception:
Java.lang.IllegalStateException: Could not find backup for factory javax.faces.context.FacesContextFactory.
at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.Java:1135)
at javax.faces.FactoryFinder.getFactory(FactoryFinder.Java:379)
at javax.faces.webapp.FacesServlet.init(FacesServlet.Java:350)
at org.Apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.Java:1284)
at org.Apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.Java:1197)
at org.Apache.catalina.core.StandardWrapper.allocate(StandardWrapper.Java:864)
at org.Apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.Java:134)
at org.Apache.catalina.core.StandardContextValve.invoke(StandardContextValve.Java:122)
at org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:501)
at org.Apache.catalina.core.StandardHostValve.invoke(StandardHostValve.Java:171)
at org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:102)
at org.Apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.Java:950)
at org.Apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.Java:116)
at org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:408)
at org.Apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.Java:1040)
at org.Apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.Java:607)
at org.Apache.Tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.Java:316)
at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1145)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:615)
at org.Apache.Tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.Java:61)
at Java.lang.Thread.run(Thread.Java:745)
J'ai ajouté ces fichiers JAR à mon projet:
jstl-1.2.jar
javax.faces-api-2.2.jar
Comment cela est-il causé et comment puis-je le résoudre?
IllegalStateException: impossible de trouver la sauvegarde pour la fabrique javax.faces.context.FacesContextFactory
Cette exception est plus facile à comprendre si vous remplacez "sauvegarde" par "implémentation". Cela se résume finalement à "J'ai trouvé l'API JSF, mais nulle part un JSF ne se trouve dans le même contexte de chemin de classe que celui où j'ai trouvé l'API JSF". En d'autres termes, vous avez une API JSF quelque part dans le classpath d'exécution qui n'est accompagnée d'aucune implémentation JSF. Par exemple. avoir un jsf-api.jar
ou même javaee.jar
sans aucun jsf-impl.jar
ou javax.faces.jar
dans le même contexte de chemin de classe.
Dans votre cas particulier,
J'ai ajouté ce bocal à mon projet:
jstl-1.2.jar
etjavax.faces-api-2.2.jar
Le javax.faces-api-2.2.jar
seul n'est pas correct. Il y a 2 problèmes:
Si vous souhaitez utiliser Mojarra, suivez les instructions d'installation dans son fichier README . Dans votre cas particulier, supprimez ce javax.faces-api-2.2.jar
et mettez le dernier javax.faces-2.x.x.jar
dans /WEB-INF/lib
ou pom.xml
et cette exception devrait disparaître.
Grâce à My colleuge, @Lookub at stackoverflow, il a ajouté un autre serveur Apache et défini le port sur 8084, le tout étant compilé. En tant qu'ide, nous utilisons netbeans 8.2. Vous pouvez le faire dans le menu Services >> Serveurs. J'espère que cela t'aides.
Besoin de changer le weblogic-application.xml
du projet ear en
<?xml version='1.0' encoding='UTF-8'?>
<weblogic-application xmlns:wls="http://xmlns.Oracle.com/weblogic/weblogic-application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-application
http://www.bea.com/ns/weblogic/weblogic-application/1.0/weblogic-application.xsd">
<prefer-application-packages>
<package-name>org.opensaml.*</package-name>
<package-name>org.slf4j.*</package-name>
<package-name>antlr.*</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>
<resource-name>META-INF/services/com.Sun.faces.spi.FacesConfigResourceProvider</resource-name>
</prefer-application-resources>
</weblogic-application>
Les numéros de version des pots suivants doivent correspondre exactement: