5.3.4. Развертывание WAR в Tomcat Windows Service

  1. Откройте диалог в Studio: дерево проектов CUBA > Project > Deployment > WAR Settings, или просто вручную добавьте задачу buildWar в конец скрипта сборки build.gradle.:

    task buildWar(type: CubaWarBuilding) {
        appHome = '${app.home}'
        singleWar = true
        includeContextXml = true
        includeJdbcDriver = true
        appProperties = ['cuba.automaticDatabaseUpdate': true]
    }

    Если параметры сервера отличаются от параметров локального Tomcat, используемого для быстрого развертывания, укажите соответствующие свойства приложения. Например, если конечный сервер запущен на порту 9999 и вы используете сборку раздельных WAR файлов, то определение задачи должно выглядеть следующим образом:

    task buildWar(type: CubaWarBuilding) {
        appHome = '${app.home}'
        singleWar = false
        includeContextXml = true
        includeJdbcDriver = true
        appProperties = [
            'cuba.automaticDatabaseUpdate': true,
            'cuba.webPort': 9999,
            'cuba.connectionUrlList': 'http://localhost:9999/app-core'
        ]
    }

    Вы можете указать отдельный файл проекта war-context.xml для указания настроек подключения к базе данных, или предоставить этот файл позже на сервере:

    task buildWar(type: CubaWarBuilding) {
        appHome = '${app.home}'
        singleWar = true
        includeContextXml = true
        includeJdbcDriver = true
        appProperties = ['cuba.automaticDatabaseUpdate': true]
        coreContextXmlPath = 'modules/core/web/META-INF/war-context.xml'
    }
  2. Запустите задачу buildWar. В результате, файл app.war (или несколько файлов, если вы настроили сборку раздельных WAR) будет собран в каталоге build/distributions вашего проекта.

    gradlew buildWar
  3. Скачайте и установите Tomcat 9 Windows Service Installer с официального сайта Apache Tomcat.

  4. После завершения установки, перейдите в подкаталог bin установленного сервера и запустите tomcat9w.exe от имени администратора, чтобы поменять настройки службы Tomcat:

    1. На вкладке Java установите параметр Maximum memory pool 1024MB.

    2. Укажите для Tomcat использовать кодировку UTF-8, добавив строку -Dfile.encoding=UTF-8 в поле Java Options.

    3. Укажите домашний каталог приложения, добавив строку -Dapp.home=c:/app_home в поле Java Options.

      tomcat service settings
  5. Если вы хотите предоставить параметры подключения к БД через локальный файл на сервере, создайте файл в подкаталоге conf/Catalina/localhost каталога Tomcat. Название файла зависит от названия WAR-сборки, например app.xml для single WAR, или app-core.xml, если собираются раздельные WAR-файлы. Скопируйте содержимое context.xml в этот файл.

  6. При использовании настроек по умолчанию, все журнальные сообщения приложения попадают в файл logs/tomcat9-stdout.log. У вас есть два варианта, как кастомизировать настройки журналов:

    • Создать файл конфигурации logback в вашем проекте. Укажите путь к этому файлу в параметре logbackConfigurationFile задачи buildWar (вручную или с помощью диалога Studio WAR Settings).

    • Создать файл с настройками журналирования на конечном сервере.

      Скопируйте файл logback.xml из локального Tomcat (под-папка deploy/tomcat/conf проекта) в домашний каталог приложения и поменяйте свойство logDir в этом файле:

      <property name="logDir" value="${app.home}/logs"/>

      Добавьте следующую строчку в поле Java Options окна настроек Windows-службы Tomcat 9, чтобы указать путь к настройкам журналирования:

      -Dlogback.configurationFile=C:/app_home/logback.xml
  7. Скопируйте сгенерированный WAR файл(-ы) в подкаталог webapps сервера Tomcat.

  8. Перезапустите службу Tomcat.

  9. Откройте http://localhost:8080/app в браузере.