Запуск JSF 2.0 на контейнере Servlet 2.4
Насколько я знаю, JSF 2 требует сервлет 2.5, поэтому он не работает на JBOSS 4.05 (Tomcat 5.5). К сожалению, я должен развернуть приложение, которое использует JSF 2.0 и Primefaces в этой среде.
Есть ли какой-нибудь взлом, чтобы использовать это?
1 ответ
JSF 2.0 сильно зависит от EL 2.1, который является частью Servlet 2.5 и является серьезным изменением по сравнению с EL 2.0, который является частью Servlet 2.4, но он не зависит от какого-либо конкретного API Servlet 2.5. Сервлет 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.xjboss-el.jar
файл (реализует EL 2.1 и поддерживает EL 2.2 как вызов метода с аргументами)jsf-api.jar
а такжеjsf-impl.jar
из Моджарры 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>
Простой 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 3.0 из-за наличия специфического Servlet 2.5 el-api.jar
файл.