Spring Boot mit JSF; Konnte nicht finden backup für die Fabrik javax.Gesichter.Kontext.FacesContextFactory
Ich habe einige Probleme mit Spring Boot und JSF. Das servlet scheint korrekt startet, aber wenn ich Versuch auf eine Ressource zuzugreifen, bekomme ich die folgende exception
java.lang.IllegalStateException: Could not find backup for factory javax.faces.context.FacesContextFactory.
at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:1011)
at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:343)
at javax.faces.webapp.FacesServlet.init(FacesServlet.java:302)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:884)
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.valves.RemoteIpValve.invoke(RemoteIpValve.java:683)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
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.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1720)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1679)
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:724)
Meine Bewerbung Klasse ist wie folgt
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
@Bean
public FacesServlet facesServlet() {
return new FacesServlet();
}
@Bean
public ServletRegistrationBean facesServletRegistration() {
ServletRegistrationBean registration = new ServletRegistrationBean(
facesServlet(), "*.xhtml");
registration.setName("Christmas");
return registration;
}
@Bean
public ServletListenerRegistrationBean<ConfigureListener> jsfConfigureListener() {
return new ServletListenerRegistrationBean<ConfigureListener>(
new ConfigureListener());
}
}
Habe ich keine web.xml oder faces-config.xml und meine pom.xml ist wie folgt
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.x.y.z</groupId>
<artifactId>project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.5.RELEASE</version>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>5.0</version>
</dependency>
<!-- JSF 2 -->
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.1.11</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.1.11</version>
</dependency>
</dependencies>
</project>
Habe ich den Verdacht, dass es einige Konflikte in den Abhängigkeiten im Zusammenhang mit der jsf-api, aber ich kann nicht scheinen, um herauszufinden, wo. Jede Hilfe bei der Lösung dieses Problems würde sehr geschätzt werden.
- Ich habe entfernt das servlet Abhängigkeiten und ich bin immer noch mit dem gleichen Problem. In welcher Weise ist mein runtime classpath ein Durcheinander? Wie kann ich Sie reinigen?
- Danke, ich glaube, ich habe meine pom konfiguriert in der Weise, dass der link schon sagt. Ich habe die 2 Abhängigkeiten auf jsf-api und jsf-impl. Ich habe sogar versucht, die jsf-api-Abhängigkeit haben "vorgesehenen" Rahmen, aber das Problem weiterhin besteht.
- Ich schlage vor, dass Sie einen Blick auf das Projekt. Siehe auch stackoverflow.com/questions/24671624/....
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bekommen JSF arbeiten auf Spring Boot ohne
web.xml
oderfaces-config.xml
müssen Sie es zu zwingen, laden der Konfigurationsdateien über ein init-parameter auf dieServletContext
. Eine einfache Möglichkeit dafür ist die ImplementierungServletContextAware
:JSF
ConfigureListener
auch eine Abhängigkeit von JSP, so müssen Sie eine Abhängigkeit von Jasper zu Ihrem pom:Ist es nicht direkt mit Ihrem problem, aber Sie brauchen nicht zu erklären
FacesServlet
wie eine Bohne. DieServletRegistrationBean
ist ausreichend.Diese Blätter
Application.java
suchen, wie folgt:wahrscheinlich haben Sie vergessen hinzuzufügen Zuhörer com.sun.faces.config.ConfigureListener.class :