Каковы рекомендуемые зависимости JSF от TomEE1.7.x?

Я разрабатываю приложение JSF2.0 (я не совсем уверен в версии JSF) на TomEE 1.7.3 (на основе JavaEE6).

В моем Maven pom.xml у меня было слишком много зависимостей, которые я скопировал из многих примеров, но я сократил их до минимальных требований. Ниже представлена ​​часть моего файла pom.xml, посвященная зависимостям:

<dependencies>
    <!-- JavaEE6 -->
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0</version>
    </dependency>
    <!-- /JavaEE6 -->

    <!-- OmniFaces for JSF, @Eager, postback same request parameters, etc. -->
    <dependency>
        <groupId>org.omnifaces</groupId>
        <artifactId>omnifaces</artifactId>
        <version>1.8.3</version>
    </dependency>
    <!-- /OmniFaces -->

    <!-- glassfish faces (is it called mojarra??) -->
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.faces</artifactId>
        <version>2.2.12</version>
        <scope>runtime</scope>
    </dependency>
    <!-- /glassfish faces -->

    <!-- some mysql connector -->
    <!-- some aws sdks, s3, ec2, etc -->
    <!-- some apache commons, StringUtils. etc -->
    <!-- some apache velocity -->
</dependencies>

Зависимость org.glassfish#javax.faces#2.2.12 также может быть удалена, но это вызывает проблемы с макетом html (с загрузочным css). Понижение до версии 2.0.x вызывает ту же проблему с макетом. Я знаю, что могу это исправить, но это займет пару часов.

Я хочу спросить:

  1. Хорошая или плохая идея - использовать морды стеклянной рыбки 2.2.x в TomEE1.7.x? В описании TomEE говорится, что он поддерживает только JSF 2.0, но пока работает почти нормально (у меня есть несколько проблем, но они не имеют отношения к этой версии).
  2. Лучше ли удалить зависимость граней стеклянной рыбы и вместо этого использовать MyFaces по умолчанию?
  3. Будет ли даже лучше, если я выберу сервер Glassfish вместо TomEE в моем случае?

Кстати, вчера я задал еще один вопрос: JSF2.0 Некоторые лица: сообщения не отправляются на перенаправленную страницу при обработке ошибок

и я осознал, что сначала мне нужно очистить свой проект, чтобы это могло помочь уменьшить мои проблемы.

Спасибо.


person Hirofumi Okino    schedule 26.12.2015    source источник


Ответы (1)


Как вы уже сказали, TomEE - это контейнер Java EE 6 (а не простой контейнер JSP / сервлетов, такой как Tomcat). Таким образом, в нем уже есть (почти) все, начиная с Java EE 6 provided, включая JSF 2.0 / 2.1. Почти потому, что на самом деле это контейнер веб-профиля Java EE. Таким образом, вы действительно должны использовать javaee-web-api идентификатор артефакта.

Только этого должно хватить:

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
</dependency>

Как продукт Apache, его связанная реализация JSF на самом деле является MyFaces, а не Mojarra.

Если вы собираетесь использовать JSF 2.2, который является частью Java EE 7, вам следует использовать TomEE 7 и изменить версию в pom.

<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
</dependency>

В этом месяце была выпущена веха, см. страницу загрузок. Альтернативой TomEE 7 являются WildFly 8+ или Payara 4+.

Смотрите также:

  • Наша вики-страница JSF - также содержит инструкции по установке JSF и координаты Maven (и много другой полезной информации для начала работы).
person BalusC    schedule 26.12.2015
comment
Спасибо. Для ясности, вы предлагаете использовать MyFaces по умолчанию (вместо org.glassfish # javax.faces), когда я использую TomEE? Если так, я быстро откорректирую макет html для MyFaces, а затем попробую сделать первую веху TomEE7! - person Hirofumi Okino; 26.12.2015
comment
Оба хорошие. Если вы действительно хотите использовать Mojarra, вам следует выполнять обновление на стороне сервера (просто замените банки MyFaces в папке /lib на банки Mojarra), а не в конце веб-приложения, чтобы помпон остался без изменений. - person BalusC; 26.12.2015
comment
Мне тоже помогает / lib, я даже не знал, что это необходимо, еще раз спасибо! - person Hirofumi Okino; 26.12.2015
comment
Обычно только тогда, когда сервер уже предоставляет это из коробки. Пожалуйста. - person BalusC; 26.12.2015
comment
Мне было трудно исправить макет, и это было связано с omniFaces, поэтому я задал другой вопрос: stackoverflow.com/questions/34471378/ - person Hirofumi Okino; 26.12.2015