Во всяком случае, я был готов дать этому попытку, и здесь мы идем. Если вы хотите начать использовать любую из технологий JBoss, рекомендуется сначала проверить с помощью JBoss Developer Framework . Это хорошая коллекция различных примеров и кратких обзоров, которые помогут вам начать работу с Java EE и его технологиями. Одним из них является пример RichFaces-Validation, который демонстрирует, как использовать JSF 2.0, RichFaces 4.2, CDI 1.0, JPA 2.0 и Bean Validation 1.0 вместе.
Пример
Пример состоит из объекта Member, который имеет некоторые ограничения JSR-303 (Bean Validation). Обычно они проверяются в нескольких местах, начиная с базы данных, до уровня постоянства и, наконец, уровня представления в тесном взаимодействии с клиентом. Даже если этот справочник не содержит слоя постоянства, он начинается с Энити, которая достаточно хорошо отражает реальную жизненную ситуацию. Приложение содержит слой представления, написанный с использованием JSF и RichFaces, и включает в себя мастер AJAX для регистрации новых членов. Недавно зарегистрированный участник должен предоставить пару информации, прежде чем он будет фактически «зарегистрирован». Это включает в себя адрес электронной почты имя и его номер телефона.
Начиная
Я не собираюсь повторять то, что отличный и подробный быстрый старт уже показывает вам. Итак, если вы хотите запустить это на JBoss AS7 .. иди туда. Мы начинаем с чистого веб-проекта Maven. И лучший и самый простой способ сделать это — запустить NetBeans 7.2 и создать его. Давайте назовем это «richwls-web». Откройте свой pom.xml и начните там что-то менять. Сначала удалите одобренные вещи там. Нам это не нужно. Следующее, чтобы добавить немного зависимостьManagement:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
<dependencyManagement> <dependencies> <dependency> <groupId>org.jboss.bom</groupId> <artifactId>jboss-javaee-6.0-with-tools</artifactId> <version>1.0.0.Final</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.richfaces</groupId> <artifactId>richfaces-bom</artifactId> <version>4.2.0.Final</version> <scope>import</scope> <type>pom</type> </dependency> </dependencies> </dependencyManagement> |
Это добавляет спецификацию материалов для Java EE 6 и RichFaces в ваш проект. Спецификация определяет версии «стека» (или коллекции) артефактов. Вы найдете это с чем-нибудь от ребят из RedHat, и это считается «лучшей практикой», чтобы иметь его. В конце концов, это делает вашу жизнь проще, поскольку она управляет версиями и зависимостями для вас.
На длинный список истинных зависимостей:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
<!-- Import the CDI API --> <dependency> <groupId>javax.enterprise</groupId> <artifactId>cdi-api</artifactId> <scope>provided</scope> </dependency> <!-- Import the JPA API --> <dependency> <groupId>javax.persistence</groupId> <artifactId>persistence-api</artifactId> <version>1.0.2</version> <scope>provided</scope> </dependency> <!-- JSR-303 (Bean Validation) Implementation --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>4.3.0.Final</version> <scope>provided</scope> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> <!-- Import the JSF API --> <dependency> <groupId>javax.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <!-- Import RichFaces runtime dependencies - these will be included as libraries in the WAR --> <dependency> <groupId>org.richfaces.ui</groupId> <artifactId>richfaces-components-ui</artifactId> </dependency> <dependency> <groupId>org.richfaces.core</groupId> <artifactId>richfaces-core-impl</artifactId> </dependency> |
За исключением зависимостей RichFaces, все остальные предоставляются средой выполнения. В этом случае это будет GlassFish 3.1.2.2. Если вы не определили его где-либо еще (settings.xml), вам также следует добавить репозиторий JBoss в раздел сборки:
|
1
2
3
4
5
|
<repository> <id>jboss-public-repository-group</id> <name>JBoss Public Maven Repository Group</name> </repository> |
Скопируйте содержимое каталога richfaces-validation в source-zip или извлеките его из github . Будьте немного осторожны и не путайтесь с созданным нами pom.xml;) Создайте его и разверните.
вопросы
Первое, с чем вас встречают, это приятное небольшое сообщение о сварке:
|
1
|
WELD-000054 Producers cannot produce non-serializable instances for injection into non-transient fields of passivating beans [...] Producer Method [Logger] with qualifiers |
Очевидно, у нас есть проблема, и нам нужно объявить поле Logger как временное.
|
1
2
|
@Injectprivate transient Logger logger; |
Не знаю, почему это работает на AS7, но, может быть, я когда-нибудь узнаю 🙂 Следующая итерация: Изменить, собрать, развернуть.
|
1
|
java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableSet; |
Это не выглядит лучше. Запустите WLS CAT по адресу http: // localhost: 7001 / wls-cat / и попытайтесь узнать об этом.
Похоже, что Oracle использует магию Google внутри сервера. Хорошо. У нас нет возможности развернуть RichFaces как отдельную войну с WebLogic, потому что здесь нужно решить некоторые проблемы с загрузкой классов. И рекомендуемый способ — добавить так называемый Filtering Classloader. Вы делаете это, добавляя к своему уху файл weblogic-application.xml. Да: давайте переупаковываем все, кладем войну в пустое ухо и добавляем магию в weblogic-application.xml:
|
1
2
3
|
<prefer-application-packages> <package-name>com.google.common.*</package-name> </prefer-application-packages> |
Готово? Еще одно развертывание, и вы, наконец, видите свое приложение. В основном RichFaces работает на WebLogic, но вы должны упаковать его в ухо и развернуть загрузчик классов для классов com.google.common. *. Это намного проще с PrimeFaces, но … в любом случае, есть причины, почему я попробовал это. Во-первых, мне нравится идея запуска проверки бинов на стороне клиента. Если вы посмотрите на пример, который вы видите, то <rich: validator event = ‘blur’ /> добавляет клиентскую валидацию как для ограничений валидации бина, так и для стандартных валидаторов jsf для клиента. Без необходимости возиться с чем-либо в JavaScript или дублировать логику.
Приятного кодирования и не забудьте поделиться!
Ссылка: Запуск RichFaces на WebLogic 12c от нашего партнера по JCG Маркуса Эйзела из блога Enterprise Software Development с Java .

