在 Servlet 2.4 容器上运行 JSF 2.0
据我所知,JSF 2 需要 servlet 2.5,因此它不能在 JBOSS 4.05 (Tomcat 5.5) 上运行。不幸的是,我必须在该环境中部署一个使用 JSF 2.0 和 Primefaces 的应用程序。
有什么黑客可以使用它吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
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
中的以下库进行了快速测试:lib< 复制的
el-api.jar
文件Tomcat 6.0.x 的 /code> 文件夹jboss-el.jar
文件(实现 EL 2.1 并支持 EL 2.2 类方法调用带参数)jsf-impl.jar
“nofollow">Mojarra 2.0.x和一个 Servlet 2.4
web.xml
,其中声明了 JBoss EL:一个简单的 JSF 2.0 Facelet(不是 JSP!),带有一个简单的
带有一个带有
的按钮和一个简单的@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 容器。JSF 2.0 depends heavily on EL 2.1 which is part of Servlet 2.5 and is a major change as opposed to EL 2.0 which is part of Servlet 2.4, but it does not depend on any particular Servlet 2.5 specific API. Servlet 2.4 should work as good. So in theory, you could get JSF 2.0 to work on Servlet 2.4 if you provide your own EL 2.1 API and implementation in
/WEB-INF/lib
. I did a quick test here on Tomcat 5.5.33 with the following libraries in/WEB-INF/lib
:el-api.jar
file copied fromlib
folder of Tomcat 6.0.xjboss-el.jar
file (implements EL 2.1 and supports EL 2.2 like method invocation with arguments)jsf-api.jar
andjsf-impl.jar
from Mojarra 2.0.xAnd a Servlet 2.4
web.xml
where the JBoss EL is been declared:A simple JSF 2.0 Facelet (not JSP!) with a simple
<h:form>
with a button with<f:ajax>
and a simple@ViewScoped
@ManagedBean
works for me on Tomcat 5.5.33. Give it a try on your JBoss 4.0.5 and test it thoroughly.Note that you need a minimum of JDK 1.5, not JDK 1.4. Also note that your application is this way unportable to any Servlet 3.0 container due to presence of the Servlet 2.5 specific
el-api.jar
file.