JSF в финальном релизе JBoss AS6. (перевод)

Оригинал статьи - "JavaFX… does it have a future?".

JSF в финальном релизе JBoss AS6

Когда я создавал здесь блог, он был о JSFUnit. Но сегодня пришло время включить в него материалы и о других вещах, над которыми я работаю в JBoss. Помимо JSFUnit, я так же отвечал за интеграцию JSF в сервер приложений JBoss. С появлением финальной версии JBoss AS6, я бы хотел рассказать о некоторых больших улучшениях.


Короткая история о JSF в JBoss AS

JSF был интегрирован в JBoss AS, начиная с версии 4.0.3. В то время мы использовали MyFaces 1.1. В реальности это означало, что JSF должен был быть указан в пути к классам, поэтому вам не нужно было заниматься связыванием JSF с вашим WAR-файлом и т.д. Интеграция была на столько сырой, что вы должны были объявить слушателя событий контекста MyFaces - в вашем родном web.xml.

В JBoss AS4.2 и AS5 интеграция стала большей. Мы перешли на сановскую реализацию JSF 1.2, теперь известную как Mojarra.
JSF 1.2 включает поддержку аннотаций JEE 5, таких как @PostConstruct, @PreDestroy, и @Resource. Это так же включало интеграцию с JSP и EL. И уже не нужно было объявлять слушателя в web.xml.

Несмотря на лучшую интеграцию и новые фичи, некоторые люди были очень недовольны. Ведь несмотря на то, что MyFaces и Mojarra соответствовали одним и тем же спецификациям и проходили тестирование на одних и тех же тестах, они не были на 100% совместимы. И приложения, которые отлично работали на AS4.0.3 -  могли уже не работать на AS4.2 и AS5. Более того, реальность такова, что JSF приложения даже не полностью совместимы в рамках версий JSF. Приложения, которые работали на Mojarra 1.2, возможно не запустятся на Mojarra 2.

Я уж не говорю про библиотеку компонентов JSF. Там совместимость между версиями и их реализациями еще хуже.


JSF на AS6: к познанию реалий жизни

Реальность такова, что сервер приложений должен хорошо взамиодейстсовать с более чем одной реализацией JSF. Поэтому, в AS6 - мы поддерживаем три версии JSF.
Mojarra 2.0 сделана реализацией по умолчанию. Mojarra 1.2 - для облегчения миграции с AS5. И, MyFaces 2.0 - для тех, кто предпочитает MyFaces. Чтобы выбрать другой JSF, все что вам нужно сделать, это объявить один контекстный параметр в вашем web.xml, следующим образом:

<context-param>
    <param-name>org.jboss.jbossfaces.JSF_CONFIG_NAME</param-name>   
    <param-value>Mojarra-1.2</param-value>
</context-param>

Но описание возможностей этим не заканчивается. Например вы хотите связать JSF с вашим WAR-файлом таким образом, как это реализовано в Tomcat. Ну что ж, прекрасно. Если вы хотите добавить поддержку четвертой версии JSF к JBoss AS, и сделать ее по умолчанию, то это очень легко.

Вы можете связать библиотеку компонентов с конкретной версией JSF и назвать это "MyPerfectJSFConfig". После этого ссылайтесь к JSF Config в web.xml для всех ваших приложений, которым нужно это. И теперь вам уже не нужно снова и снова связывать jar-ы RichFaces или IceFaces, в каждом вашем WAR:
<context-param>
    <param-name>org.jboss.jbossfaces.JSF_CONFIG_NAME</param-name>   
    <param-value>MyPerfectJSFConfig</param-value>
</context-param>
Все это очень удобно для тестирования приложений с различными версиями JSF и их реализациями. Когда-нибудь спрашивали себя, будет ли ваше Mojarra-приложение работать быстрее (или без ошибок) на MyFaces? Теперь это легко выяснить. Что делать, если у вас есть старые приложения, которое работает на JSF 1 2, но у вас также есть новое приложение, которое работает на JSF 2.0? Вам не нужно беспокоиться, что обновление до JSF 2.0 сломает старые приложения. Они могут работать бок о бок в одном экземпляре JBoss AS без изменений.

Если вам нужны дополнительные детали по реализации этого, то можете посмотреть документацию JSF на AS6.


Все это и многое другое

Не могу не упомянуть, что все JEE-интеграции, которые вы ожидаете - у вас будут. Если вы используете JSF 1.2, то вы получите фичи EE5, такие как аннотации для управляемых компонентов. Если вы используете JSF 2.0, то вы получите фичи EE6, такие как Bean Validation.

Таким образом, я действительно горжусь интеграции JSF в AS6. Потребовалось много работы, чтобы получить этот уровень гибкости. И я могу честно сказать, что каждая жалоба на интеграцию JSF, которую я слышал по предыдущим версиям JBoss, теперь исправлена. Теперь вперед к JBoss AS7.

Не прощаюсь и спасибо всем,

Стэн

Комментариев нет:

Отправить комментарий