7.3.2. Развертывание WAR в Jetty
Рассмотрим пример сборки WAR-файлов и их развертывания на сервере Jetty. Предполагается, что приложение использует СУБД PostgreSQL.
-
Используйте страницу Deployment settings > WAR в Studio или вручную добавьте в конец build.gradle задачу сборки buildWar:
task buildWar(type: CubaWarBuilding) { appHome = '${app.home}' appProperties = ['cuba.automaticDatabaseUpdate': 'true'] singleWar = false }
В данном случае собирается два WAR-файла, отдельно для блоков Middleware и Web Client.
-
Запустите сборку, выбрав
buildWar
в диалоге Search в Studio, или через командную строку (подразумевается что Gradle wrapper создан заранее):gradlew buildWar
В результате в подкаталоге
build\distributions\war
проекта будут созданы файлыapp-core.war
иapp.war
. -
Создайте домашний каталог приложения на сервере, например,
c:\work\app_home
. -
Загрузите и установите сервер Jetty, например в каталог
c:\work\jetty-home
. Данный пример тестировался на версииjetty-distribution-9.3.6.v20151106.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 с именемtest
):<?xml version="1.0"?> <!DOCTYPE Configure PUBLIC "-" "http://www.eclipse.org/jetty/configure_9_0.dtd"> <Configure id="Server" class="org.eclipse.jetty.server.Server"> <New id="CubaDS" class="org.eclipse.jetty.plus.jndi.Resource"> <Arg></Arg> <Arg>jdbc/CubaDS</Arg> <Arg> <New class="org.postgresql.ds.PGSimpleDataSource"> <Set name="ServerName">localhost</Set> <Set name="PortNumber">5432</Set> <Set name="DatabaseName">test</Set> <Set name="User">cuba</Set> <Set name="Password">cuba</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>
-
Дополнительно (в частности, для MS SQL) может потребоваться скачать следующие JAR-файлы и добавить их в папку
c:\work\jetty-base\lib\ext
:commons-pool2-2.4.2.jar commons-dbcp2-2.1.1.jar commons-logging-1.2.jar
-
Добавьте следующий текст в начало файла
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
. Файл драйвера можно взять из каталогаlib
CUBA Studio, либо из каталогаbuild\tomcat\lib
проекта. В случае PostgreSQL это файлpostgresql-9.1-901.jdbc4.jar
. -
Скопируйте файлы WAR в каталог
c:\work\jetty-base\webapps
. -
Откройте командную строку в каталоге
c:\work\jetty-base
и выполните:java -jar c:\work\jetty-home\start.jar
-
Откройте
http://localhost:8080/app
в веб-браузере.