Статьи

Java EE 6 DDD Galleria на WebLogic 12c


Вы ,
вероятно , следовал за мной с последними
Java EE 6 Galleria например сообщений .
Первый один был основным введение.
Второй один был о запуске его на последних GlassFish. Кто-то из парней из RedHat упомянул, что мы должны рассмотреть возможность использования этого примера в GlassFish. Отлично;) Спасибо за хорошую идею. Это именно то, что мы собираемся сделать сегодня. Я собираюсь привести пример Galleria в последнюю версию WebLogic 12c.

Подготовка

Настройтесь на какую-то конфигурацию. У вас уже установлена ​​последняя
версия NetBeans 7.1, и вы собираетесь загрузить
ZIP-архив WebLogic 12cраспределение в секунду. После загрузки wls1211_dev.zip поместите его в выбранное место и разархивируйте. Отныне мы будем называть эту папку папкой% MW_HOME%. Откройте командную строку и настройте в ней переменные% JAVA_HOME%,% JAVA_VENDOR% и% MW_HOME%:

set JAVA_HOME=D:\jdk1.7.0_04
set MW_HOME=D:\temp\wls12zip
set JAVA_VENDOR=Sun

После того, как вы сделали это, последний шаг — запустить скрипт конфигурации установки configure.cmd в каталоге MW_HOME. Это единовременно.

Настройте свой домен WebLogic

Следующее, что нам нужно, это домен WebLogic. Откройте новую командную строку. Настройте среду в текущей оболочке, запустив сценарий% MW_HOME% \ wlserver \ server \ bin \ setWLSEnv.cmd. Выполните% MW_HOME% \ wlserver \ common \ bin \ config.cmd и следуйте указаниям мастера, чтобы создать базовый домен сервера WebLogic с именем test-domain в папке по вашему выбору (например, D: \ temp \ test-domain). Дайте имя пользователя и пароль по вашему выбору (например, system / system1) и нажимайте в мастере, пока у вас не появится кнопка «Готово». WebLogic нужен файл JAR клиента Derby для настройки и использования базы данных. Скопируйте derbyclient-10.8.2.2.jar из вашего репозитория m2 в папку test-domain \ lib. Теперь давайте запустим вновь созданный домен вручную, запустив startWebLogic.cmd в только что созданном доменном каталоге.Убедитесь, что все работает, перейдя к 
http: // localhost: 7001 / console  и вход в систему с учетными данными сверху. Перейдите к «Службы> Источники данных» и нажмите кнопку «Создать» над таблицей. Выберите «Общий источник данных» и введите имя по вашему выбору (например, GalleriaPool) и введите jdbc / galleriaDS в качестве JNDI-имени. Выберите Derby в качестве Типа базы данных и нажмите «Далее». Выберите драйвер Derby (тип 4), нажмите «Далее» и «Далее» и введите свойства подключения (База данных: GALLERIATEST, Хост: localhost. Пользователь и Пароль: APP »и нажмите« Далее ». Если хотите, вы можете нажать нажмите кнопку «Проверить конфигурацию» сверху и убедитесь, что все настроено правильно.

Следующая самая сложная часть. Нам нужна сфера JDBC, подобная той, которую мы настроили для GlassFish. Первое отличие состоит в том, что мы на самом деле не создаем новую область, а добавляем механизм аутентификации к доступной. У WebLogic есть неприятное ограничение. Вы можете настроить столько областей безопасности, сколько захотите, но только одна из них может быть активной в данный момент времени. Это остановило меня на некоторое время, пока я не получил чаевые от
Мишеля Шильдмейера(спасибо, кстати!). Перейдите к «Области безопасности» и выберите «myrealm» из таблицы. Перейдите на вкладку «Поставщики». Выберите «Новый» над таблицей провайдеров аутентификации. Введите «GalleriaAuthenticator» в качестве имени и выберите «SQLAuthenticator» из раскрывающегося списка в качестве типа. Нажмите ОК Выберите GalleriaAuthenticator, установите флажок управления: Достаточно и сохраните. После этого перейдите на вкладку «Специфично для провайдера». Введите следующее:

Data Source Name: GalleriaPool
Password Style Retained: unchecked
Password Algorithm: SHA-512
Password Style: SALTEDHASHED
SQL Get Users Password: SELECT PASSWORD FROM USERS WHERE USERID = ?
SQL Set User Password: UPDATE USERS SET PASSWORD = ? WHERE USERID = ?
SQL User Exists: SELECT USERID FROM USERS WHERE USERID = ?
SQL List Users: SELECT USERID FROM USERS WHERE USERID LIKE ?
SQL Create User: INSERT INTO USERS VALUES ( ? , ? )
SQL Remove User: DELETE FROM USERS WHERE USERID = ?
SQL List Groups: SELECT GROUPID FROM GROUPS WHERE GROUPID LIKE ?
SQL Group Exists: SELECT GROUPID  FROM GROUPS WHERE GROUPID  = ?
SQL Create Group: INSERT INTO GROUPS VALUES ( ? )
SQL Remove Group: DELETE FROM GROUPS WHERE GROUPID  = ?
SQL Is Member: SELECT USERID FROM USERS_GROUPS WHERE GROUPID  = ? AND USERID = ?
SQL List Member Groups: SELECT GROUPID  FROM USERS_GROUPS WHERE USERID  = ?
SQL List Group Members: SELECT USERID FROM USERS_GROUPS WHERE GROUPID = ? AND USERID LIKE ?
SQL Remove Group Memberships: DELETE FROM USERS_GROUPS WHERE GROUPID = ? OR GROUPID = ?
SQL Add Member To Group: INSERT INTO USERS_GROUPS VALUES( ?, ?)
SQL Remove Member From Group: DELETE FROM USERS_GROUPS WHERE GROUPID = ? AND USERID = ?
SQL Remove Group Member: DELETE FROM USERS_GROUPS WHERE GROUPID = ?
Descriptions Supported: unchecked

Сохраните ваши изменения. и вернитесь на вкладку «Поставщики». Нажмите кнопку «Изменить порядок» и нажмите GalleriaAuthenticator в верхней части списка. Нажмите «ОК», когда закончите, и остановите ваш экземпляр WebLogic. Вы можете перезапустить его в любое время.

Настройте свои проекты

Java EE является переносимым. Правильно. И вы должны иметь возможность запускать то же самое развертывание без каких-либо изменений в WebLogic 12c. Это теория. На практике вам придется прикоснуться к развертыванию. Потому что у WebLogic есть некоторые проблемы с Hibernate. И это гораздо более капризно, когда речь идет о развертывании, чем GlassFish. Прежде всего вы должны создать папку «galleria-ear \ src \ main \ application \ META-INF». Поместите туда пустой файл weblogic-application.xml и вставьте в него следующий код:

<?xml version='1.0' encoding='UTF-8'?>
<weblogic-application xmlns="http://xmlns.oracle.com/weblogic/weblogic-application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-application http://xmlns.oracle.com/weblogic/weblogic-application/1.4/weblogic-application.xsd">
    <prefer-application-packages>
        <package-name>antlr.*</package-name>
    </prefer-application-packages>
</weblogic-application>

Это говорит WebLogic, что предпочтение отдается пакетным библиотекам приложений по сравнению с уже присутствующими на сервере. Вперед. Нам нужно добавить зависимости Hibernate на ухо. В GlassFish мы пропустили этот шаг, поскольку установили пакет Hibernate вместе с сервером. Вот так. Откройте galleria-ear pom.xml и добавьте следующее в раздел зависимостей:

<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.0.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.0.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>4.2.0.Final</version>
        </dependency>
        
        <dependency>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
            <version>3.1.0.CR2</version>
        </dependency> 

Вам также нужно взглянуть на плагин maven-ear и добавить следующее в <configuration>:

<defaultLibBundleDir>lib</defaultLibBundleDir>

И, если вы уже там, удалите jarModule для кодека commons. Это не больно, но оно упаковано в папку ear / lib, так что вы можете пропустить это.

Затем перейдите к проекту galleria-jsf и откройте web.xml. <Login-config> является неполной и должна выглядеть так:

<login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
        <form-login-page>/Login.xhtml</form-login-page>
        <form-error-page>/Login.xhtml</form-error-page>
    </form-login-config>
</login-config>
<security-role>
  <description>All registered Users belong to this Group</description>
  <role-name>RegisteredUsers</role-name>
 </security-role> 

Вам также необходимо определить возможные роли, иначе сотрудники службы безопасности WebLogic начнут жаловаться.

Добавьте пустой файл weblogic.xml в папку galleria-jsf \ src \ main \ webapp \ WEB-INF и добавьте в нее следующие строки:

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
    <security-role-assignment>
        <role-name>RegisteredUsers</role-name>
        <principal-name>RegisteredUsers</principal-name>
    </security-role-assignment>
    <session-descriptor>
        <timeout-secs>3600</timeout-secs>
        <invalidation-interval-secs>60</invalidation-interval-secs>
        <cookie-name>GalleriaCookie</cookie-name>
        <cookie-max-age-secs>-1</cookie-max-age-secs>
        <url-rewriting-enabled>false</url-rewriting-enabled>
    </session-descriptor>
</weblogic-web-app>

Здесь мы сопоставляем роль web.xml и роль WebLogic. Вы могли бы пропустить это, но мне так нравится, чтобы вы не запутались. Элемент session-descriptor заботится об имени файла cookie JSESSION. Если вы не измените его, у вас возникнут проблемы с вошедшими пользователями в консоль администратора.

Двигайтесь по проекту galleria-ejb. Создайте пустой файл weblogic-ejb-jar.xml в папке «galleria-ejb \ src \ main \ resources \ META-INF». Вставьте в него следующий код:

<?xml version="1.0" encoding="UTF-8"?>
<weblogic-ejb-jar xmlns="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar http://xmlns.oracle.com/weblogic/weblogic-ejb-jar/1.0/weblogic-ejb-jar.xsd">
    <security-role-assignment>
        <role-name>RegisteredUsers</role-name>
        <principal-name>RegisteredUsers</principal-name>
    </security-role-assignment>
</weblogic-ejb-jar>

Сравнимый с web.xml / weblogic.xml, он также сообщает WebLogic, как сопоставить роли безопасности ejb-jar.xml с ролями WebLogic. Хорошо, откройте файл persistence.xml и добавьте следующие строки:

 <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect" />
    <property name="hibernate.transaction.jta.platform"
                value="org.hibernate.service.jta.platform.internal.WeblogicJtaPlatform" />

Первый явно выбирает диалект дерби для Hibernate. Второй рассказывает Hibernate, где и как искать транзакции. Все сделано. Теперь вы сможете снова собрать проект и развернуть его. Используйте консоль администратора или
NetBeans для ее развертывания. Спасибо, что нашли время, чтобы следовать этому длинному сообщению. Я надеюсь, что это было полезно!