Статьи

Запуск RichFaces 4.1.0.Final на WebLogic 12c

Вы могли заметить, что я просто люблю JSF. Не только спецификация и эталонная реализация Mojarra, но и самый креативный компонент на рынке. Это мой самый любимый PrimeFaces и, конечно, RichFaces . Вот почему вы найдете здесь сообщения о «работающем xxx на xxx» ? Сегодня мой день RichFaces и WebLogic, поэтому небольшое продолжение моего предыдущего поста, это скорее обновление о том, как запустить его на последней версии WebLogic 12c. Вот так:

подготовка

Загрузите IDE на ваш выбор. Я буду использовать NetBeans 7.1 RC 2 для этого поста. Загрузите и установите WebLogic Server 12c. Либо с установщиком платформы по вашему выбору, либо из дистрибутива ZIP. Продолжайте создавать домен и добавлять сервер в NetBeans. ( Подробнее см. Мой предыдущий пост .) Вернитесь в NetBeans, проверьте настройки maven и создайте новый проект веб-приложения Maven. Давайте сейчас назовем это rfshowcase. Введите недостающий материал (группа, версия и пакет). Выберите или добавьте свой локальный сервер Oracle WebLogic в качестве среды выполнения. Добавьте репозиторий JBoss Maven и волшебную richfaces-bom в ваш файл pom.xml:

1
2
3
4
5
6
7
<repositories>
 <repository>
 <id>jboss</id>
 <name>JBoss Repository</name>
 <url>http://repository.jboss.org/nexus/content/groups/public/</url>
 </repository>
</repositories> 
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<properties>
 <org.richfaces.bom.version>4.1.0.Final</org.richfaces.bom.version>
 <!-- ... -->
    </properties>
 
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.richfaces</groupId>
                <artifactId>richfaces-bom</artifactId>
                <version>${org.richfaces.bom.version}</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
<!-- ... -->
        </dependencies>
    </dependencyManagement>

Добавьте зависимости RichFaces:

1
2
3
4
5
6
7
8
9
<dependency>
 <groupId>org.richfaces.ui</groupId>
 <artifactId>richfaces-components-ui</artifactId>
</dependency>
 
<dependency>
 <groupId>org.richfaces.core</groupId>
 <artifactId>richfaces-core-impl</artifactId>
</dependency>

И вы сделали! В отличие от более ранней версии WLS (сравните мой предыдущий пост), JSF 2.x и JSTL 1.2 были включены непосредственно в classpath сервера. Приложения, развернутые на WebLogic Server, могут беспрепятственно использовать JSF 2.x и JSTL 1.2, не требуя от разработчиков развертывания и ссылки на отдельные общие библиотеки. Таким образом, вы можете начать реализацию своего приложения.

Несколько простых тестов

Давайте пойдем и добавим index.xhtml в вашу папку веб-страниц. Добавьте пространства имен RichFaces в свой HTML-тег:

И начните использовать необходимые компоненты. В своем небольшом примере я выделил rich: panelMenu, взятый из showcase.richfaces.org . Теперь щелкните правой кнопкой мыши по вашему проекту и «запустите» его! NetBeans запускает ваш экземпляр WLS и развертывает ваше приложение. После этого он должен открыть браузер, который указывает на http: // localhost: 7001 / rfshowcase /, и вы увидите, что ваше приложение запущено и работает. Это все. Больше нечего делать. Нет развертывания библиотеки, ничего больше. Это то, что я бы назвал хорошим прогрессом. По сравнению с глупым развертыванием библиотеки, которое требовалось в более ранних версиях WLS, вы знаете, что можете свободно использовать то, что вам подходит. Даже если вам хочется использовать другой RI, вы можете просто вернуть загрузчик классов, указав тег предпочитаемых приложений в вашем файле weblogic.xml.

  13.12.2011 20:48:43 org.richfaces.application.InitializationListener onStart
 ИНФОРМАЦИЯ: Реализация RichFaces Core от JBoss, подразделения Red Hat, Inc., версия v.4.1.0.Final 

Clazzloading или Oracle и RedHat против Google

Если вы посмотрите на свое приложение с точки зрения загрузчика классов, вы увидите, что у вас есть большое количество (705) классов в конфликте. В случае RichFaces все это в пакете com.google.common. *. Причина этого заключается в том, что WLS распространяет com.google.common_1.0.0.0_0-6.jar, который конфликтует с зависимостью RichFaces com.google.guava.guava.r08. Запуск моих небольших тестов, кажется, не приносит никакого вреда. Но было бы лучше настроить так называемый FilteringClassLoader, который предоставляет механизм для настройки дескрипторов развертывания для явного указания того, что определенные пакеты всегда должны загружаться из приложения, а не загружаться системным загрузчиком классов. Поэтому вы должны изменить свой проект на EAR-модуль и добавить этот небольшой абзац в ваш weblogic-application.xml (уровень уха):

1
2
3
<prefer-application-packages>
   <package-name>com.google.common.*</package-name>
</prefer-application-packages>

Ссылка: Запуск RichFaces 4.1.0.Final на WebLogic 12c от нашего партнера по JCG Маркуса Эйзела ( Markus Eisele) из блога по разработке программного обеспечения для предприятий с использованием Java

Статьи по Теме :