Во всяком случае, я был готов дать этому попытку, и здесь мы идем. Если вы хотите начать использовать любую из технологий 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
|
@Inject private 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 .