在Servlet 2.4容器上运行JSF 2.0

Ren*_*gas 6 jsf jboss tomcat servlets jsf-2

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

有什么黑客可以使用吗?

Bal*_*usC 12

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

以及web.xml声明JBoss EL 的Servlet 2.4 :

<context-param>     
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>   
</context-param>
Run Code Online (Sandbox Code Playgroud)

一个简单的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容器都是不可移植的.