Запуск JSF 2.0 на контейнере Servlet 2.4 - PullRequest
6 голосов
/ 14 мая 2011

Насколько я знаю, JSF 2 требует сервлет 2.5, поэтому он не работает на JBOSS 4.05 (Tomcat 5.5). К сожалению, мне нужно развернуть приложение, которое использует JSF 2.0 и Primefaces в этой среде.

Есть какой-нибудь хак, чтобы использовать это?

1 Ответ

12 голосов
/ 14 мая 2011

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...