Mojarra 2.1.0 - FCS不能与tomcat 7一起使用 [英] Mojarra 2.1.0 - FCS doesn't work with tomcat 7

查看:204
本文介绍了Mojarra 2.1.0 - FCS不能与tomcat 7一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用带有tomcat 7的JSF 2.1(Mojarra 2.1.0 - FCS),如下所示:

i am using JSF 2.1 ( Mojarra 2.1.0 - FCS ) with tomcat 7 as follows:

<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上运行它时,我得到以下异常:

when i tried to run it on tomcat 7 i got the following exception:

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)

为什么我得到这个例外的任何想法,以及如何解决它?

any ideas why i am getting this exception, and how to solve it?

推荐答案

这是已知问题。这实际上是由 issue 1937 引起的。简而言之,注释扫描器偶然包含Glassfish特定的代码,这使得它不适用于基本的servletcontainer,它不附带内置注释扫描程序,如Tomcat和Jetty。这已在2.1.1中修复。

This is a known problem. This is actually caused by issue 1937. In a nutshell, the annotation scanner contains by accident Glassfish-specific code which causes that it doesn't work on basic servletcontainers which doesn't ship with builtin annotation scanners, such as Tomcat and Jetty. This is fixed in 2.1.1.

因此,要解决您的问题,您需要升级到至少2.1.1。目前的最新版本是2.1.3,我建议最新版本。有关所有Maven pom信息,另请参阅 Mojarra下载页面

So, to solve your problem, you need to upgrade to at least 2.1.1. The currently latest version is 2.1.3, I recommend to go for the latest. See also the Mojarra download page for all Maven pom information.

完全不同的替代方案是用更完整的容器(例如Glassfish)替换Tomcat。这将为您提供EJB / JPA支持的优势,以便您可以轻松,轻松地构建业务服务,执行后台作业,与oneliners交互数据库等。

A completely different alternative is to replace Tomcat by a more full fledged container such as Glassfish. This will give you among others the benefit of EJB/JPA support out the box so that you can nicely and easily build business services, execute background jobs, interact with database with oneliners, etc.

这篇关于Mojarra 2.1.0 - FCS不能与tomcat 7一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆