Ejecutando JSF 2.0 en el contenedor Servlet 2.4

Por lo que sé, JSF 2 requiere servlet 2.5, por lo que no se ejecuta en JBOSS 4.05 (Tomcat 5.5). Desafortunadamente tengo que implementar una aplicación que use JSF 2.0 y Primefaces en ese entorno.

¿Hay algún truco para usar eso?

JSF 2.0 depende en gran medida de EL 2.1, que es parte de Servlet 2.5 y es un cambio importante en comparación con EL 2.0, que es parte de Servlet 2.4, pero no depende de ninguna API específica específica de Servlet 2.5. Servlet 2.4 debería funcionar tan bien. Entonces, en teoría, podría obtener JSF 2.0 para trabajar en Servlet 2.4 si proporciona su propia API EL 2.1 y su implementación en /WEB-INF/lib . Hice una prueba rápida aquí en Tomcat 5.5.33 con las siguientes bibliotecas en /WEB-INF/lib :

  • Archivo el-api.jar copiado de la carpeta lib de Tomcat 6.0.x
  • Archivo jboss-el.jar (implementa EL 2.1 y admite EL 2.2 como invocación de método con argumentos)
  • jsf-api.jar y jsf-api.jar jsf-impl.jar de Mojarra 2.0.x

Y un Servlet 2.4 web.xml donde se ha declarado JBoss EL:

  com.sun.faces.expressionFactory org.jboss.el.ExpressionFactoryImpl  

Un simple Facelet JSF 2.0 (¡no JSP!) Con un simple con un botón con y un simple @ViewScoped funciona para mí en Tomcat 5.5.33. Pruébelo en su JBoss 4.0.5 y pruébelo a fondo.

Tenga en cuenta que necesita un mínimo de JDK 1.5, no JDK 1.4. También tenga en cuenta que su aplicación no se puede importar a ningún contenedor de Servlet 3.0 debido a la presencia del archivo el-api.jar específico de Servlet 2.5.