Frage

Ich verwende JSF 2.1 (Mojarra 2.1.0 - FCS) mit Tomcat 7 wie folgt:

<dependency>
 <groupId>com.sun.faces</groupId>
 <artifactId>jsf-api</artifactId>
 <version>2.1.0-b11</version>
 <scope>compile</scope>
 </dependency>

 <dependency>
 <groupId>com.sun.faces</groupId>
 <artifactId>jsf-impl</artifactId>
 <version>2.1.0-b11</version>
 <scope>compile</scope>
 </dependency>

Als ich versuchte, es auf Tomcat 7 auszuführen, bekam ich die folgende Ausnahme:

java.lang.InstantiationException: com.sun.faces.application.ServletContextSensitiveSingletonStore
    at java.lang.Class.newInstance0(Class.java:340)
    at java.lang.Class.newInstance(Class.java:308)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4268)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4771)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:785)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:763)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:558)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:674)
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:599)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:538)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1390)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:355)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:89)
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:312)
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:292)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:998)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:772)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:990)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:275)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:424)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:648)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:138)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:576)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:415)

Irgendwelche Ideen, warum ich diese Ausnahme bekomme und wie ich sie lösen kann?

War es hilfreich?

Lösung

Das ist ein Bekanntes Problem. Dies wird tatsächlich durch verursacht durch Ausgabe 1937. Kurz gesagt, der Annotationsscanner enthält einen unfallglasfischspezifischen Code, der dazu führt, dass er nicht auf grundlegenden ServletContainern funktioniert, die nicht mit gebauten Annotations-Scannern wie Tomcat und Steg versandt. Dies ist in 2.1.1 festgelegt.

Um Ihr Problem zu lösen, müssen Sie auf mindestens 2.1.1 aktualisieren. Die aktuell neueste Version ist 2.1.3, ich empfehle, die neueste zu entscheiden. Siehe auch die Mojarra Download -Seite Für alle Informationen von Maven Pom.

Eine völlig andere Alternative besteht darin, Tomcat durch einen mehr gefluteten Behälter wie Glasfische zu ersetzen. Dies bietet Ihnen unter anderem den Vorteil des EJB/JPA -Supports der Box, damit Sie gut und einfach Business Services erstellen, Hintergrundjobs ausführen, mit Datenbank mit Oneliners usw. interagieren können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top