Насколько мне известно, 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 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 из-за наличия специального файла el-api.jar для Servlet 2.5.