Перенос приложения JSF 1.2 в JSF 2.0

В настоящее время мое веб-приложение основано на следующих библиотеках/фреймворках/инструментах:

  • Java 1.6
  • JSF 1.2_07-b03-FCS
  • Лицеи 1.1.14
  • Richfaces 3.3.2.GA
  • EL-Functors 1.0.2
  • Spring 2.5.2
  • Сервер Tomcat v5.5

Дополнительная информация:

  • Spring отвечает за управление всем beans, используемым 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 управляет beans и использует @ManagedBean. Или, возможно, перейдите в библиотеку CDI, например Weld?
  • Используйте <f:ajax> вместо <a4j:support>?

Что касается JavaEE6

Я знаю, хорошей идеей было бы полностью перейти на JavaEE6. Мне понравилось это делать, но по некоторым причинам я просто не могу этого сделать. Одна (плохая) причина в том, что я должен оставаться на серверах Tomcat. Однако я могу добавить новые сторонние библиотеки, чтобы иметь некоторые функции JavaEE6, такие как EL 2.2... Поэтому, пожалуйста, рассмотрите этот аспект в своих ответах.

С уважением.

Ответ 1

Поскольку Richfaces 4 все еще находится в разработке, вы можете использовать Richfaces 3.3.3 с JSF 2.0. Таким образом, вы должны использовать Facelets 1.1.15, как описано здесь http://community.jboss.org/wiki/RichFaces333andJSF20

Это означает, что переход от a4j: поддержка к f: ajax не будет работать с вашими компонентами на основе Richfaces, поэтому я предлагаю придерживаться поддержки a4j:. Это также уменьшит миграционные усилия, если вы решите переключиться на Richfaces 4, как только он станет доступен.

Поскольку вы уже используете Spring для управления JSF- Beans, нет необходимости использовать DI-функции JSF2. Я придерживаюсь Spring, но рассмотрю обновление до Spring 3.

Кроме того, Weld определенно стоит взглянуть на.

НТН

Ответ 2

Если вы планируете остановиться с Tomcat, то переход на Java EE 6 означает, что вы будете смотреть Tomcat версии 7.

Но если вы хотите полноценный сервер Java EE 6, то GlassFish 3 или JBoss 6 - лучшая альтернатива. Tomcat может быть неудобным, когда вы пытаетесь сделать что-то вроде CDI (Weld) или EJB 3.

Только мои два цента стоят. Надеюсь, это поможет...