JSF 2.0 сильно зависит от EL 2.1 , который является частью Servlet 2.5 и является серьезным изменением по сравнению с EL 2.0 , который является частью Servlet 2.4, но это не зависитна любом конкретном сервлете 2.5 конкретного API.Сервлет 2.4 должен работать так же хорошо.Таким образом, теоретически, вы можете заставить JSF 2.0 работать на Servlet 2.4, если вы предоставите свой собственный API EL 2.1 и реализацию в /WEB-INF/lib
.Я провел быстрый тест здесь на Tomcat 5.5.33 со следующими библиотеками в /WEB-INF/lib
:
el-api.jar
файл, скопированный из папки lib
Tomcat 6.0.x jboss-el.jar
файл (реализует EL 2.1 и поддерживает вызов метода как EL 2.2 с аргументами) jsf-api.jar
и jsf-impl.jar
из Mojarra 2.0.x
И сервлет 2.4 web.xml
, в котором объявлен JBoss EL:
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>org.jboss.el.ExpressionFactoryImpl</param-value>
</context-param>
Простой Facelet JSF 2.0 (не JSP!) с простым<h:form>
с кнопкой с <f:ajax>
и простым @ViewScoped
@ManagedBean
у меня работает на Tomcat 5.5.33.Попробуйте его на JBoss 4.0.5 и тщательно протестируйте.
Обратите внимание, что вам нужен минимум JDK 1.5, а не JDK 1.4.Также обратите внимание, что ваше приложение таким образом не переносится в любой контейнер Servlet 3.0 из-за наличия специфического файла Servlet 2.5 el-api.jar
.