Запуск 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.x
  • jboss-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 файл.

Другие вопросы по тегам