5.3.2. Развертывание WAR в Jetty
Рассмотрим пример сборки WAR-файлов и их развертывания на сервере Jetty.
Мы будем использовать следующую структуру каталогов:
-
C:\work\jetty-home\
- дистрибутив Jetty; -
C:\work\jetty-base\
- директория конфигурации Jetty, в ней хранятся конфигурационные файлы Jetty, дополнительные библиотеки и веб-приложения. -
C:\work\app_home\
- домашний каталог CUBA приложения.-
Используйте диалог Дерево проектов CUBA > Project > Deployment > WAR Settings в Studio или вручную добавьте в конец build.gradle задачу сборки buildWar:
task buildWar(type: CubaWarBuilding) { appHome = '${app.home}' appProperties = ['cuba.automaticDatabaseUpdate': 'true'] singleWar = false }
В данном случае собирается два WAR-файла, отдельно для блоков Middleware и Web Client.
-
Запустите сборку, выбрав
buildWar
через командную строку (подразумевается что Gradle wrapper создан заранее):gradlew buildWar
В результате в подкаталоге
build\distributions\war
проекта будут созданы файлыapp-core.war
иapp.war
. -
Создайте домашний каталог приложения на сервере, например,
c:\work\app_home
. -
Скопируйте файл
logback.xml
из локального сервера Tomcat (под-каталог проектаdeploy/tomcat/conf
) в домашний каталог приложения (c:\work\app_home
) и отредактируйте свойствоlogDir
в этом файле:<property name="logDir" value="${app.home}/logs"/>
-
Загрузите и установите сервер Jetty, например в каталог
c:\work\jetty-home
. Данный пример тестировался на версииjetty-distribution-9.4.22.v20191022.zip
. -
Создайте каталог
c:\work\jetty-base
, откройте в нем командную строку и выполните:java -jar c:\work\jetty-home\start.jar --add-to-start=http,jndi,deploy,plus,ext,resources
-
Создайте файл
c:\work\jetty-base\app-jetty.xml
, содержащий определение пула соединений к базе данных. Содержимое файла для БД PostgreSQL должно основываться на следующем шаблоне:<?xml version="1.0"?> <!DOCTYPE Configure PUBLIC "-" "http://www.eclipse.org/jetty/configure_9_0.dtd"> <Configure id="wac" class="org.eclipse.jetty.webapp.WebAppContext"> <New id="CubaDS" class="org.eclipse.jetty.plus.jndi.Resource"> <Arg/> <Arg>jdbc/CubaDS</Arg> <Arg> <New class="org.apache.commons.dbcp2.BasicDataSource"> <Set name="driverClassName">org.postgresql.Driver</Set> <Set name="url">jdbc:postgresql://localhost/db_name</Set> <Set name="username">username</Set> <Set name="password">password</Set> <Set name="maxIdle">2</Set> <Set name="maxTotal">20</Set> <Set name="maxWaitMillis">5000</Set> </New> </Arg> </New> </Configure>
Файл
app-jetty.xml
для MS SQL должен соответствовать следующему шаблону:<?xml version="1.0"?> <!DOCTYPE Configure PUBLIC "-" "http://www.eclipse.org/jetty/configure_9_0.dtd"> <Configure id="wac" class="org.eclipse.jetty.webapp.WebAppContext"> <New id="CubaDS" class="org.eclipse.jetty.plus.jndi.Resource"> <Arg/> <Arg>jdbc/CubaDS</Arg> <Arg> <New class="org.apache.commons.dbcp2.BasicDataSource"> <Set name="driverClassName">com.microsoft.sqlserver.jdbc.SQLServerDriver</Set> <Set name="url">jdbc:sqlserver://server_name;databaseName=db_name</Set> <Set name="username">username</Set> <Set name="password">password</Set> <Set name="maxIdle">2</Set> <Set name="maxTotal">20</Set> <Set name="maxWaitMillis">5000</Set> </New> </Arg> </New> </Configure>
-
Скачайте следующие JAR-файлы, необходимые для функционирования пула соединений к БД и скопируйте их в папку
c:\work\jetty-base\lib\ext
. Два из них можно взять из проектного под-каталогаdeploy\tomcat\shared\lib
:commons-pool2-2.6.2.jar commons-dbcp2-2.7.0.jar commons-logging-1.2.jar
-
Скопируйте файл
start.ini
из дистрибутива Jetty в каталогc:\work\jetty-base
. Добавьте следующий текст в начало файлаc:\work\jetty-base\start.ini
:--exec -Xdebug -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n -Dapp.home=c:\work\app_home -Dlogback.configurationFile=c:\work\app_home\logback.xml app-jetty.xml
-
Скопируйте JDBC-драйвер используемой базы данных в каталог
c:\work\jetty-base\lib\ext
. Файл драйвера можно взять из каталогаdeploy\tomcat\lib
проекта. В случае PostgreSQL это файлpostgresql-42.2.5.jar
. -
Скопируйте файлы WAR в каталог
c:\work\jetty-base\webapps
. -
Откройте командную строку в каталоге
c:\work\jetty-base
и выполните:java -jar c:\work\jetty-home\start.jar
-
Откройте
http://localhost:8080/app
в веб-браузере.
-