在Servlet 2.4容器上运行JSF 2.0

时间:2011-05-13 22:39:24

标签: jsf tomcat servlets jboss jsf-2

据我所知,JSF 2需要servlet 2.5,所以它不能在JBOSS 4.05(Tomcat 5.5)上运行。不幸的是,我必须部署一个在该环境中使用JSF 2.0和Primefaces的应用程序。

有没有使用它的黑客?

1 个答案:

答案 0 :(得分:12)

JSF 2.0在很大程度上依赖于EL 2.1,它是Servlet 2.5的一部分,并且是一个重大变化,而不是作为Servlet 2.4的一部分的EL 2.0,但它不依赖于任何特定的Servlet 2.5特定API。 Servlet 2.4应该可以正常工作。所以理论上,如果你在/WEB-INF/lib中提供自己的EL 2.1 API和实现,你可以让JSF 2.0在Servlet 2.4上运行。我在Tomcat 5.5.33上做了一个快速测试,在/WEB-INF/lib中有以下库:

  • el-api.jar文件已从Tomcat 6.0.x
  • lib文件夹中复制
  • jboss-el.jar文件(实现EL 2.1并支持EL 2.2,如带参数的方法调用)
  • 来自Mojarra 2.0.x
  • jsf-api.jarjsf-impl.jar

声明JBoss EL的Servlet 2.4 web.xml

<context-param>     
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>   
</context-param>

一个简单的JSF 2.0 Facelet(不是JSP!),带有一个带有<h:form>的简单<f:ajax>和一个简单@ViewScoped @ManagedBean的按钮,适用于Tomcat 5.5。 33。试试你的JBoss 4.0.5并彻底测试它。

请注意,您需要至少JDK 1.5,而不是JDK 1.4。另请注意,由于存在Servlet 2.5特定的el-api.jar文件,因此您的应用程序对任何Servlet 3.0容器都不可移植。