7.3.3. Развертывание WAR в WildFly

WAR-файлы с приложением CUBA можно разворачивать на сервере WildFly. Рассмотрим пример сборки WAR-файлов для приложения, использующего PostgreSQL 9.6, и их развертывания на сервере WildFly версии 8.2 под Windows.

  1. Соберите приложение и выполните Run - Deploy, чтобы получить локальную инсталляцию Tomcat, в которой будут все необходимые зависимости для приложения.

  2. Подготовьте домашний каталог приложения:

    • Создайте каталог, который будет полностью доступен процессу сервера WildFly, например, C:\Users\UserName\app_home.

    • Скопируйте файл logback.xml из tomcat/conf в этот каталог и отредактируйте в нём свойство logDir следующим образом:

    <property name="logDir" value="${app.home}/logs"/>
  3. Настройте конфигурацию сервера WildFly:

    • Установите WildFly, например, в каталог C:\wildfly.

    • Отредактируйте файл C:\wildfly\bin\standalone.conf.bat, добавив в конец следующую строку:

    set "JAVA_OPTS=%JAVA_OPTS% -Dapp.home=%USERPROFILE%/app_home -Dlogback.configurationFile=%USERPROFILE%/app_home/logback.xml"

    Здесь мы задаём системное свойство app.home, содержащее домашний каталог приложения, и указываем, где находится конфигурационный файл logback.xml. Вместо переменной %USERPROFILE% можно использовать абсолютный путь.

    • Сравните версии Hibernate Validator в WildFly и приложении CUBA (платформа обычно использует более свежую версию). Замените файл C:/wildfly/modules/system/layers/base/org/hibernate/validator/main/hibernate-validator-x.y.z-sometext.jar более новым файлом из каталога tomcat/shared/lib, например, hibernate-validator-5.4.1.Final.jar.

    • Обновите номер версии указанного JAR-файла в файле /wildfly/modules/system/layers/base/org/hibernate/validator/main/module.xml.

    • Зарегистрируйте драйвер PostgreSQL в WildFly, скопировав файл postgresql-9.4-1201-jdbc41.jar из каталога tomcat/lib в C:\wildfly\standalone\deployments.

  4. Создайте JDBC Datasource:

    • Запустите WildFly, выполнив standalone.bat.

    • Откройте консоль администратора по адресу http://localhost:9990. При первом входе потребуется создать пользователя и задать пароль.

    • Перейдите в раздел Configuration - Subsystems - Datasources и добавьте источник данных для вашего приложения:

    Name: Cuba
    JNDI Name: java:/jdbc/CubaDS
    JDBC Driver: postgresql
    Connection URL: URL вашей БД
    Username: имя пользователя БД
    Password: пароль БД

    Драйвер JDBC будет доступен в списке обнаруженных драйверов, если вы скопировали файл postgresql-x.y.z.jar на предыдущем шаге.

    Выполните проверку соединения, нажав кнопку Test connection.

    • Активируйте источник данных.

  5. Соберите приложение:

    • Откройте вкладку Deployment settings > WAR в Studio.

    • Включите флаг Build WAR.

    • Задайте значение ${app.home} в поле Application home directory.

    • Включите флаг Include JDBC driver.

    • Сохраните настройки.

    • Откройте файл build.gradle в IDE и добавьте свойство doAfter для копирования дескриптора развертывания WildFly в задачу buildWar:

    task buildWar(type: CubaWarBuilding) {
        includeJdbcDriver = true
        appProperties = ['cuba.automaticDatabaseUpdate' : true]
        singleWar = false
        appHome = '${app.home}'
        doAfter = {
            copy {
                from 'jboss-deployment-structure.xml'
                into "${project.buildDir}/tmp/core/war/META-INF/"
            }
            copy {
                from 'jboss-deployment-structure.xml'
                into "${project.buildDir}/tmp/web/war/META-INF/"
            }
        }
    }
    • В корневом каталоге проекта создайте файл jboss-deployment-structure.xml и добавьте в него дескриптор развертывания WildFly:

    <?xml version="1.0" encoding="UTF-8"?>
    <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
        <deployment>
            <exclusions>
                <module name="org.apache.commons.logging" />
                <module name="org.apache.log4j" />
                <module name="org.jboss.logging" />
                <module name="org.jboss.logging.jul-to-slf4j-stub" />
                <module name="org.jboss.logmanager" />
                <module name="org.jboss.logmanager.log4j" />
                <module name="org.slf4j" />
                <module name="org.slf4j.impl" />
                <module name="org.slf4j.jcl-over-slf4j" />
            </exclusions>
        </deployment>
    </jboss-deployment-structure>
    • Запустите сборку WAR-файлов с помощью задачи buildWar.

  6. Скопируйте файлы app-core.war и app.war из каталога build\distributions\war в каталог WildFly C:\wildfly\standalone\deployments.

  7. Перезапустите WildFLy.

  8. Приложение будет доступно по адресу http://localhost:8080/app. Логи записываются в домашний каталог приложения: C:\Users\UserName\app_home\logs.