5.3.1. Быстрое развертывание

Быстрое развертывание используется по умолчанию при разработке приложения, так как обеспечивает минимальное время сборки, установки и старта приложения. Данный вариант может также использоваться и для эксплуатации приложения.

Быстрое развертывание производится, когда вы запускаете приложение в Studio или выбираете в главном меню команду CUBA > Build Tasks > Deploy. При этом Studio запускает задачу deploy, объявленную для модулей core и web в файле build.gradle. Перед первым выполнением deploy выполняется также задача setupTomcat, которая устанавливает и инициализирует локальный сервер Tomcat. Данные задачи можно также выполнить и вне Studio.

Пожалуйста, убедитесь, что ваше окружение не содержит переменных CATALINA_HOME, CATALINA_BASE и CLASSPATH. Эти переменные могут вызвать проблемы с запуском сервера, которые не будут отражаться в логах. Перезагрузите компьютер после удаления переменных.

В результате быстрого развертывания в каталоге deploy проекта создается следующая структура (перечислены только важные каталоги и файлы):

deploy/
    app_home/
        app/
            conf/
            temp/
            work/
        app-core/
            conf/
            temp/
            work/
        logs/
            app.log
        local.app.properties
        logback.xml

    tomcat/
        bin/
            setenv.bat, setenv.sh
            startup.bat, startup.sh
            debug.bat, debug.sh
            shutdown.bat, shutdown.sh
        conf/
            catalina.properties
            server.xml
            logging.properties
            Catalina/
                localhost/
        lib/
            hsqldb-2.4.1.jar
        logs/
        shared/
            lib/
        webapps/
            app/
            app-core/
  • deploy/app_home - домашний каталог приложения.

  • app/temp, app-core/temp - временные каталоги приложений веб-клиента и среднего слоя.

  • app/work, app-core/work - рабочие каталоги приложений веб-клиента и среднего слоя.

  • logs - каталог журналов приложений. Основной лог-файл приложений - app.log.

  • deploy/tomcat - каталог локального Tomcat.

    • bin - каталог, содержащий скрипты запуска и остановки сервера Tomcat:

      • setenv.bat, setenv.sh - скрипты установки переменных окружения. Эти скрипты следует использовать для установки параметров памяти JVM, настройки доступа по JMX, параметров подключения отладчика.

        Если вы столкнулись с медленной загрузкой Tomcat под Linux, установленной на виртуальной машине (VPS), попробуйте настроить JVM на использование источника неблокирующей энтропии в файле setenv.sh:

        CATALINA_OPTS="$CATALINA_OPTS -Djava.security.egd=file:/dev/./urandom"
      • startup.bat, startup.sh - скрипты запуска Tomcat. Сервер стартует в отдельном консольном окне в Windows и в фоне в Unix-like операционных системах.

        Для запуска сервера в текущем консольном окне вместо startup.* используйте команды

        > catalina.bat run

        $ ./catalina.sh run

      • debug.bat, debug.sh - скрипты, аналогичные startup.*, однако запускающие Tomcat с возможностью подключения отладчика. Именно эти скрипты запускаются при выполнении задачи start скрипта сборки.

      • shutdown.bat, shutdown.sh - скрипты остановки Tomcat.

    • conf - каталог, содержащий файлы конфигурации Tomcat и развернутых в нем приложений.

      • catalina.properties - свойства Tomcat. Для загрузки общих библиотек из каталога shared/lib (см. ниже) данный файл должен содержать строку:

        shared.loader=${catalina.home}/shared/lib/*.jar
      • server.xml - описатель конфигурации Tomcat. В этом файле можно изменить порты сервера.

      • logging.properties - описатель конфигурации логирования самого сервера Tomcat.

      • Catalina/localhost - в этом каталоге можно разместить дескрипторы развертывания приложений context.xml. Дескрипторы, расположенные в данном каталоге имеют приоритет над дескрипторами в каталогах META-INF самих приложений, что часто бывает удобно при эксплуатации системы. Например, в таком дескрипторе на уровне сервера можно указать параметры подключения к базе данных, отличные от указанных в самом приложении.

        Дескриптор развертывания на уровне сервера должен иметь имя приложения и расширение .xml. То есть для создания такого дескриптора, например, для приложения app-core, необходимо скопировать содержимое файла webapps/app-core/META-INF/context.xml в файл conf/Catalina/localhost/app-core.xml.

    • lib - каталог библиотек, загружаемых в common classloader сервера. Эти библиотеки доступны как самому серверу, так и всем развернутым в нем веб-приложениям. В частности, в данном каталоге должны располагаться JDBC-драйверы используемых баз данных (hsqldb-XYZ.jar, postgresql-XYZ.jar и т.д.)

    • logs - каталог логов сервера.

    • shared/lib - каталог библиотек, доступных всем развернутым приложениям. Классы этих библиотек загружаются в специальный shared classloader сервера. Использование shared classloader задается в файле conf/catalina.properties как описано выше.

      Задачи deploy файла сборки копируют в этот каталог все библиотеки, не перечисленные в параметре jarNames, то есть не специфичные для данного приложения.

    • webapps - каталог веб-приложений. Каждое приложение располагается в собственном подкаталоге в формате exploded WAR.

      Задачи deploy файла сборки создают подкаталоги приложений с именами, указанными в параметрах appName, и кроме прочего копируют в их подкаталоги WEB-INF/lib библиотеки, перечисленные в параметре jarNames.

Пути устанновки локального Tomcat и домашнего каталога приложения можно задать в свойствах cuba.tomcat.dir и cuba.appHome в файле build.gradle, например:

cuba {
    // ...
    tomcat {
        dir = "$project.rootDir/some_path/tomcat"
    }
    appHome = "$project.rootDir/some_path/app_home"
}