【发布时间】:2011-08-25 07:14:48
【问题描述】:
据我所知,JSF 2 需要 servlet 2.5,所以它不能在 JBOSS 4.05 (Tomcat 5.5) 上运行。不幸的是,我必须在那个环境中部署一个使用 JSF 2.0 和 Primefaces 的应用程序。
有什么技巧可以使用它吗?
【问题讨论】:
标签: jsf tomcat servlets jboss jsf-2
据我所知,JSF 2 需要 servlet 2.5,所以它不能在 JBOSS 4.05 (Tomcat 5.5) 上运行。不幸的是,我必须在那个环境中部署一个使用 JSF 2.0 和 Primefaces 的应用程序。
有什么技巧可以使用它吗?
【问题讨论】:
标签: jsf tomcat servlets jboss jsf-2
JSF 2.0 很大程度上依赖于 EL 2.1,它是 Servlet 2.5 的一部分,与 EL 2.0 相比,它是 Servlet 2.4 的一部分,这是一个重大变化,但它不依赖于任何特定的 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 类似带参数的方法调用)jsf-api.jar 和 jsf-impl.jar 来自 Mojarra 2.0.x
还有一个声明了 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 容器。
【讨论】: