一尘不染

在Servlet 2.4容器上运行JSF 2.0

tomcat

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

有没有可以使用的技巧?


阅读 268

收藏
2020-06-16

共1个答案

一尘不染

JSF 2.0在很大程度上依赖于Servlet 2.5的一部分EL
2.1
,这是与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

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

还有一个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>

一个简单的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容器。

2020-06-16