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

Стандартное для JavaEE развертывание приложений в WAR-файлы осуществляется с помощью задач сборки buildWar и createWarDistr. Рассмотрим пример сборки WAR-файлов и их развертывания на сервере Glassfish 4.

  1. Добавляем в build.gradle задачи сборки WAR для модулей core и web:

    configure(coreModule) {
        ...
        task buildWar(dependsOn: assemble, type: CubaWarBuilding) {
            appName = 'app-core'
            appHome = '${app.home}'
        }
    }
    
    configure(webModule) {
        ...
        task buildWar(dependsOn: assemble, type: CubaWarBuilding) {
            appName = 'app'
            appHome = '${app.home}'
        }
    }
  2. Добавляем в build.gradle задачу сборки дистрибутива:

    task createWarDistr(dependsOn: [coreModule.buildWar, webModule.buildWar], type: CubaWarDistribution) {
        appHome = '${app.home}'
    }
  3. Запускаем сборку:

    gradlew createWarDistr

    В результате в подкаталоге build/war проекта создаются домашний каталог с именем ${app.home} и файлы app-core.war и app.war. Имя домашнего каталога здесь роли не играет, так как реальное имя будет задаваться для сервера с помощью системной переменной Java.

  4. Копируем содержимое build/war/${app.home} на сервер, например в каталог /home/user/app_home.

  5. Устанавливаем сервер Glassfish 4, например в каталог /home/user/glassfish4.

  6. Копируем JDBC-драйвер используемой базы данных в каталог /home/user/glassfish4/glassfish/domains/domain1/lib. Файл драйвера можно взять из каталога lib Studio, либо из каталога build/tomcat/lib проекта (если перед этим выполнялось быстрое развертывание в Tomcat).

  7. Запускаем сервер:

    $ cd /home/user/glassfish4/bin

    $ ./asadmin start-domain

  8. Переходим по адресу http://localhost:4848 и в консоли управления сервером:

    1. Создаем JDBC Connection Pool для подключения к нашей базе данных, например:

      • Pool Name: AppDB

      • Resource Type: javax.sql.DataSource

      • Database Driver Vendor: Postgresql

      • Datasource Classname: org.postgresql.ds.PGSimpleDataSource

      • User: cuba

      • DatabaseName: app_db

      • Password: cuba

    2. Создаем JDBC Resource:

      • JNDI Name: jdbc/CubaDS

      • Pool Name: AppDB

    3. В экране server (Admin Server) -> Properties -> System Properties задаем следующие системные переменные Java:

      • app.home = /home/user/app_home - домашний каталог приложения.

      • log4j.configuration = file:///home/user/app_home/log4j.xml - файл конфигурации логгирования приложения.

  9. Перезапускаем сервер:

    $ ./asadmin stop-domain

    $ ./asadmin start-domain

  10. Снова открываем консоль сервера по адресу http://localhost:4848 и в экране Applications выполняем развертывание файлов app-core.war и app.war, находящихся в каталоге дистрибутива, созданного на шаге 3.

  11. Приложение запущено:

    • Веб-интерфейс доступен по адресу http://localhost:8080/app

    • Лог-файлы создаются в каталоге /home/user/app_home/logs