【问题标题】:Error deploying Primefaces application on JBoss 7.1.0在 JBoss 7.1.0 上部署 Primefaces 应用程序时出错
【发布时间】:2012-04-18 17:04:48
【问题描述】:

我正在尝试在 JBOSS 7.1.0 中部署 JSF (Primefaces) 应用程序。

我收到以下错误:

18:17:03,390 SEVERE [javax.enterprise.resource.webcontainer.jsf.config] (MSC 
service thread 1-8) Critical error during deployment: :  
com.sun.faces.config.ConfigurationException:Factory  
'javax.faces.context.PartialViewContextFactory' was not configured properly.
    at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactories
Exist(FactoryConfigProcessor.java:305) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAP
SHOT]
    at com.sun.faces.config.processor.FactoryConfigProcessor.process(Factory
ConfigProcessor.java:219) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:361)
[jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureLi
stener.java:225) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at org.apache.catalina.core.StandardContext.contextListenerStart(Standar
dContext.java:3392) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:3
850) [jbossweb-7.0.10.Final.jar:]
    at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentS
ervice.java:90) [jboss-as-web-7.1.0.Final.jar:7.1.0.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(Se
rviceControllerImpl.java:1811)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceCont
rollerImpl.java:1746)

有什么想法吗?

谢谢。

【问题讨论】:

  • JBoss 7 捆绑了它自己的 JSF 版本。这可能会或可能不会干扰您的申请。您的 Primefaces 应用程序捆绑了哪个版本的 JSF?

标签: java jsf primefaces jboss7.x


【解决方案1】:

这表明与 webapp 的运行时类路径中的另一个 JSF 实现存在冲突。 JBoss AS、Glassfish、WebSphere、Weblogic 等成熟的 Java EE 应用服务器已经捆绑了 JSF,因为这是 Java EE API 的一部分。如果您在 webapp 的 /WEB-INF/lib 中也提供 JSF,它可能与 appserver 捆绑的 JSF 冲突。 JSF API 部分将从 appserver 提供的 JSF 库加载,但 JSF impl 部分将从 webapp 提供的 JSF 库加载。如果它们是不同的版本,那么您将收到类似这样的配置错误。

你有两个选择:

  1. 移除 webapp-bundled JSF 并依赖 server-bundled JSF。

  2. 告诉服务器改用 webapp-bundled JSF。如何做到这一点取决于服务器的品牌/版本。在您使用 JBoss 7.x 的特殊情况下,只需将以下上下文参数添加到 webapp 的 web.xml

    <context-param>
        <param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
        <param-value>true</param-value>
    </context-param> 
    

Tomcat、Jetty 等准系统 JSP/Servlet 容器不附带 JSF,这就是为什么在定位此类容器时需要在 /WEB-INF/lib 中提供自己的 JSF 库。

另见:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-07
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 2012-04-23
    相关资源
    最近更新 更多