3

我正在尝试在 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)

有任何想法吗?

谢谢。

4

1 回答 1

6

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

您有 2 个选项:

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

  2. 告诉服务器改用 webapp 捆绑的 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> 
    

准系统 JSP/Servlet 容器(如 Tomcat、Jetty 等)没有捆绑 JSF,这就是为什么在/WEB-INF/lib针对此类容器时需要提供自己的 JSF 库的原因。

也可以看看:

于 2012-04-05T12:46:37.683 回答