
JBoss AS 6.X gets shipped with Mojarra 2.0.3 (b5), but I wanted to do some testing with Mojarra 2.0.9. To be able to use this JSF implementation, you need to create a custom JSF deployer:
~ $ cd /Applications/jboss-6.1.0.Final/server/default/deployers/jsf.deployer/
/Applications/jboss-6.1.0.Final/server/default/deployers/jsf.deployer $ mkdir Mojarra-2.0.9
/Applications/jboss-6.1.0.Final/server/default/deployers/jsf.deployer $ cd Mojarra-2.0.9/
/Applications/jboss-6.1.0.Final/server/default/deployers/jsf.deployer/Mojarra-2.0.9 $ mkdir META-INF jsf-libs
In the META-INF folder, create the following file: web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="<a href="http://java.sun.com/xml/ns/javaee"
">http://java.sun.com/xml/ns/javaee"
</a>; xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance"
">http://www.w3.org/2001/XMLSchema-instance"
</a>; xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/javaee">http://java.sun.com/xml/ns/javaee</a> <a href="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
">http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
</a>; version="2.5">
<!-- ======================== Introduction ============================== -->
<!-- This document defines default values for the Mojarra-2.0 JSF config -->
<!-- -->
<!-- WARNING: Do not configure application-specific resources here! -->
<!-- They should go in the "/WEB-INF/web.xml" file in your application. -->
<!-- =========== Common Context Params ================================== -->
<!-- Regular expression to determine if two different URLs actually point -->
<!-- to the same jar file. This keeps faces-config files from being -->
<!-- read twice. -->
<context-param>
<param-name>com.sun.faces.duplicateJARPattern</param-name>
<param-value>^tmp\d+(\S*\.jar)</param-value>
</context-param>
<!-- JBossInjectionProvider provides resource injection for managed beans. -->
<!-- See JSF 1.2 spec section 5.4 for details. -->
<context-param>
<param-name>com.sun.faces.injectionProvider</param-name>
<param-value>org.jboss.web.jsf.integration.injection.JBossDelegatingInjectionProvider</param-value>
</context-param>
<!-- ================== Common filter Configuration ==================== -->
<!-- ================== Common Listener Configuration ==================== -->
<!-- Configures JSF 2.0 -->
<listener>
<listener-class>org.jboss.web.jsf.integration.config.JBossMojarra20ConfigureListener</listener-class>
</listener>
</web-app>
In
jsf-libs:
- Copy the file jboss-faces.jar from the 2.0.3 folder
- Download the JSF libraries from: http://javaserverfaces.java.net/download.html
- This should result in something as:
/Applications/jboss-6.1.0.Final/server/default/deployers/jsf.deployer/Mojarra-2.0.9/jsf-libs $ ls -al
total 4952
drwxr-xr-x 5 jochen staff 170 Nov 7 16:58 .
drwxr-xr-x 4 jochen staff 136 Nov 7 16:44 ..
-rw-r--r--@ 1 jochen staff 6148 Nov 7 16:58 .DS_Store
-rw-r--r--@ 1 jochen staff 2502592 Nov 7 16:45 javax.faces-2.0.9.jar
-rw-rw-r--@ 1 jochen staff 21804 Aug 16 2011 jboss-faces.jar
Open the file: /Applications/jboss-6.1.0.Final/server/default/deployers/jsf.deployer/META-INF/jsf-integration-deployer-jboss-beans.xml:
- Extend the property jsfConfigurations:
<property name="jsfConfigurations">
<map keyClass="java.lang.String" valueClass="java.lang.String">
...
<entry>
<key>Mojarra-2.0.9</key>
<value>${jboss.server.home.url}deployers/jsf.deployer/Mojarra-2.0.9</value>
</entry>
...
</map>
</property>
- Add the following bean:
...
<bean name="JSFUrlIntegrationDeployer-209" class="org.jboss.jsf.deployer.JSFUrlIntegrationDeployer">
<property name="JSFConfigName">
<value>Mojarra-2.0.9</value>
</property>
<property name="JSFImplManagementDeployer">
<inject bean="JSFImplManagementDeployer"/>
</property>
</bean>
...
Finally, to let your web application use the correct JSF deployer, make a reference in your WEB-INF/web.xml of your application (using the context-param: org.jboss.jbossfaces.JSF_CONFIG_NAME) :
<context-param>
<param-name>org.jboss.jbossfaces.JSF_CONFIG_NAME</param-name>
<param-value>Mojarra-2.0.9</param-value>
</context-param>