JBoss AS 7.1.1没有拿起我的JSF实现

时间:2012-05-09 14:29:24

标签: java jsf jboss7.x

当我在JBoss AS 7.1.1中部署.war文件并调用

FacesContext.class.getPackage().getImplementationTitle() 

FacesContext.class.getPackage().getImplementationVersion()

当我在tomcat上部署它时,我得到了一个不同的版本。

JBoss:JSF JavaServer Faces API 2.0.1.Final

Tomcat:JSF Mojarra 2.0.6-FCS

似乎JBoss没有在WEB-INF\lib\中选择正确的JAR。 这会导致我的网站出现不同的行为。 我尝试用

解决问题
<context-param>
   <param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>
   <param-value>true</param-value>
</context-param>

但那并没有奏效。我读了Alternative JSF implementation with JBoss 71,但显然它在7.1.1中没有解决。

我将jboss-deployment-structure.xml添加到WEB-INF\,其中包含以下内容。

<jboss-deployment-structure> 
<deployment>
    <exclusions>
      <module name="javax.faces.api" slot="main"/>
      <module name="com.sun.jsf-impl" slot="main"/>
    </exclusions>
    <dependencies>
      <module name="org.apache.commons.logging" />
      <module name="org.apache.commons.collections" />
      <module name="org.apache.log4j" />
      <module name="org.dom4j" />
      <module name="javax.faces.api" slot="1.2"/>
      <module name="com.sun.jsf-impl" slot="1.2"/>
    </dependencies>
  </deployment>   
</jboss-deployment-structure>

但是我的应用程序未部署,我在server.log中收到以下错误:

14:06:14,733 SEVERE [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-4) Critical error during deployment: : com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! Class org.jboss.as.web.deployment.jsf.JandexAnnotationProvider is not an instance of com.sun.faces.spi.AnnotationProvider
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:357) [jsf-impl.jar:2.0.6-FCS]

如何解决我的问题?

2 个答案:

答案 0 :(得分:3)

还有其他依赖于JSF API的东西吗?我不确定为什么JBoss和Tomcat之间会有所不同,但是尝试运行mvn依赖:tree和mvn依赖:使用和不使用JSF进行分析。

答案 1 :(得分:1)

JBoss AS 7.1.1默认使用JSF 2,但是向后兼容JSF 1.2。

我遇到了同样的问题并解决了以下问题:我使用了与您相同的jboss-deployment-structure.xml并在web.xml中添加了以下参数:

<context-param>
 <param-name>org.jboss.jbossfaces.JSF_CONFIG_NAME</param-name>
 <param-value>Mojarra-1.2</param-value>
</context-param>

您不需要lib目录中的JSF 1.2 JAR(因此org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL中不需要web.xml参数)。

来源:http://tapas-tanmoy-bose.blogspot.ch/2014/01/how-to-run-jsf-12-application-in-jboss.html

我怀疑JBoss AS 7.1.1忽略了JSF jboss-deployment-structure.xml的被排除模块(但我org.hibernate作为另一个被排除的模块被有效排除,证明jboss-deployment-structure.xml是考虑到了。)