2011-10-18 50 views
1

我使用JSF 2.1(鑽嘴魚科2.1.0 - FCS)在Tomcat 7如下:鑽嘴魚科2.1.0 - FCS不工作的Tomcat 7

<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> 

當我試圖在Tomcat運行7我得到以下例外:

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) 

任何想法,爲什麼我得到這個異常,以及如何解決它?

+0

可能的[JSF 2設置問題在Tomcat 7(java.lang.InstantiationException:com.sun.faces.application.ServletContextSensitiveSingletonStore)](http://stackoverflow.com/questions/5364377/jsf-2-setup-issue-in-tomcat-7-java-郎instantiationexception-COM-太陽臉-A) –

回答

5

這是一個known problem。這實際上是由issue 1937造成的。簡而言之,註釋掃描器無意中包含Glassfish特定的代碼,這會導致它無法在內置註釋掃描器(如Tomcat和Jetty)附帶的基本servlet容器上工作。這在2.1.1中得到了解決。

因此,要解決您的問題,您需要升級到至少2.1.1。目前最新的版本是2.1.3,我建議去最新的版本。有關所有Maven pom信息,另請參閱Mojarra download page

一個完全不同的選擇是用更完整的容器(如Glassfish)替換Tomcat。這將爲您帶來EJB/JPA支持帶來的好處,以便您可以輕鬆便捷地構建業務服務,執行後臺作業,使用線索與數據庫進行交互等。

+0

我應該取代我的舊的依賴,只有這個API:' javax.faces javax.faces-API 2.1'沒有提供,我應該讓它編譯與否(請記住,我使用的是tomcat)

+0

只需嘗試一下,或者提出一個新問題。我不是Maven的傢伙。我至少可以告訴Tomcat **不會與JSF一起出貨。所以這些庫肯定需要以webapp的'/ WEB-INF/lib'結尾。 – BalusC

相關問題