Миграция приложения JSF 1.2 в JSF 2.0
В настоящее время мое веб-приложение основано на следующих библиотеках / фреймворках / инструментах:
- Java 1.6
- JSF 1.2_07-b03-FCS
- Facelets 1.1.14
- Richfaces 3.3.2.GA
- EL-Функторы 1.0.2
- Весна 2.5.2
- Tomcat сервер v5.5
Некоторая дополнительная информация:
Spring
отвечает за управление всеми компонентами, используемыми JSF (org.springframework.web.jsf.DelegatingVariableResolver
определяется какvariable-resolver
в моемfaces-config.xml
файл).EL-Functors
используется как мойel-resolver
для того, чтобы расширить язык выражений.- Я создал много пользовательских компонентов, некоторые из которых являются просто композициями Facelets, другие - компонентами на основе Java (некоторые из них являются компонентами Richfaces).
Я хочу попытаться (в основном из любопытства, но если это работает хорошо, почему бы не по- настоящему?) Перенести мое приложение в JSF 2.0.
Вопрос № 1: какие критические моменты я должен учитывать для правильной работы моего приложения?
Я говорю здесь только о наличии рабочего приложения, ни меньше, ни больше.
Я уже знаю, что мне придется просмотреть все свои пользовательские компоненты, потому что я буду использовать новую версию Richfaces (4.0), а также посмотреть, работают ли они правильно.
Вопрос № 2: какими будут первые шаги для использования преимуществ JSF 2.0? Некоторые идеи, которые у меня уже есть:
- Удалить
EL-Functors
и использовать язык выражений 2.2; - Позвольте JSF управлять бинами и использовать
@ManagedBean
, Или, может быть, переключиться на библиотеку CDI, такую как Weld? - использование
<f:ajax>
вместо<a4j:support>
?
Что касается JavaEE6
Я знаю, хорошей идеей было бы полностью перейти на JavaEE6. Я бы хотел сделать это, но по некоторым причинам я просто не могу этого сделать. Одна (плохая) причина в том, что я должен оставаться на серверах Tomcat. Однако я могу добавить новые сторонние библиотеки, чтобы иметь некоторые функции JavaEE6, такие как EL 2.2... Поэтому, пожалуйста, учтите этот аспект в своих ответах.
С уважением.
2 ответа
Поскольку Richfaces 4 все еще находится в стадии разработки, вы можете использовать Richfaces 3.3.3 с JSF 2.0. Таким образом, вы должны использовать Facelets 1.1.15, как описано здесь http://community.jboss.org/wiki/RichFaces333andJSF20
Это означает, что переключение с a4j:support на f:ajax не будет работать с вашими компонентами на основе Richfaces, поэтому я предлагаю придерживаться a4j:support. Это также снизит эффективность миграции, если вы решите переключиться на Richfaces 4, как только он станет доступен.
Поскольку вы уже используете Spring для управления JSF-компонентами, вам не нужно использовать DI-функции JSF2. Я бы придерживался Spring, но рассмотрел бы обновление до Spring 3.
Кроме того, Weld определенно стоит посмотреть.
НТН
Если вы планируете остаться с Tomcat, то переход на Java EE 6 означает, что вы будете смотреть на Tomcat версии 7.
Но если вам нужен полноценный сервер Java EE 6, то GlassFish 3 или JBoss 6 - лучшая альтернатива. Tomcat может быть сомнительным, когда вы пытаетесь сделать что-то вроде CDI (Weld) или EJB 3.
Просто мои два цента стоит. Надеюсь, поможет...