Ответ 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
из 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>
Простой 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.