2012-05-09 37 views
8

當我部署在JBoss中我.war文件AS 7.1.1並調用JBoss AS中7.1.1不拿起我的JSF實現

FacesContext.class.getPackage().getImplementationTitle() 

FacesContext.class.getPackage().getImplementationVersion() 

我得到一個不同的版本,則當我在tomcat上部署它。

JBoss的:JSF JavaServer Faces的API 2.0.1.Final

的Tomcat:JSF鑽嘴魚科2.0.6-FCS

看來JBoss的不採摘正確的JAR文件,我在我的WEB-INF\lib\。 這會導致我的網站出現不同的行爲。 我試圖解決這個問題

<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.xmlWEB-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] 

我怎樣才能解決我的問題?

+0

您是否在jboss-deployment-structure文件中排除了JBoss 7.1默認的JSF jar? – kosa

+0

我試過了,不知道怎麼做,但是我把下面的文件jboss-deployment-structure.xml添加到WEB-INF \我在上面的消息中編輯的內容。但它給出了一個錯誤(也添加到我的問題上面) – roel

回答

3

難道還有別的東西依賴於JSF API?我不確定爲什麼JBoss和Tomcat會有所不同,但嘗試運行mvn依賴關係:tree和mvn依賴關係:分析帶和不帶JSF的分析。

+0

嗨,我不知道maven(我們使用ant來建立我們的項目(和開發時,我們只是使用eclipse導出)如何以及與我該怎麼做文件你在說什麼? – roel

+0

對不起,我假定你使用過maven,你可以在pom.xml中運行它。看看這個[Jira](https://issues.jboss.org/browse/AS7-3940?page) = com.atlassian。jira.plugin.system.issuetabpanels:all-tabpanel),看來這個問題不是固定的,直到7.1.3 – gebuh

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文件目錄(因此在web.xml中不需要org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL參數)。

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

我懷疑的JBoss AS 7.1.1忽略的jboss-deployment-structure.xml JSF的排除模塊(但我有org.hibernate作爲被有效地排除另一個排除模塊,證明jboss-deployment-structure.xml考慮) 。

相關問題