5.3.6. Развертывание UberJAR
UberJAR - это простейший способ запустить приложение CUBA в режиме эксплуатации. Вы собираете единый all-in-one JAR-файл с помощью задачи Gradle buildUberJar (см. также вкладку Deployment > UberJAR Settings в Studio) и запускаете приложение из командной строки, используя команду java
:
java -jar app.jar
Все параметры приложения определяются во время сборки, но могут быть переопределены при запуске (см. ниже). Порт веб-приложения по умолчанию - 8080
, и оно доступно по адресу http://host:8080/app
. Если в проекте есть Polymer UI, он будет доступен по умолчанию по адресу http://host:8080/app-front
.
Можно также собрать отдельные JAR-файлы для Middleware и Web Client и запустить их аналогично:
java -jar app-core.jar java -jar app.jar
Порт веб-клиента по умолчанию - 8080
, он будет подключаться к middleware, использующему localhost:8079
. Таким образом, выполнив эти две команды в двух разных терминалах Windows, вы сможете подключиться к веб-клиенту приложения по адресу http://localhost:8080/app
.
Вы можете изменить параметры, определяемые во время сборки, передав свойства приложения через системные свойства Java. Кроме того, порты, имена контекстов и пути к конфигурационным файлам можно передавать в качестве аргументов командной строки.
- Аргументы командной строки
-
-
port
- задаёт порт, на котором будет работать встроенный HTTP-сервер. Например:java -jar app.jar -port 9090
Следует учесть, что при указании порта для блока core необходимо также задать свойство приложения cuba.connectionUrlList для клиентских блоков, указав соответствующий адрес Middleware:
java -jar app-core.jar -port 7070 java -Dcuba.connectionUrlList=http://localhost:7070/app-core -jar app.jar
-
contextName
- имя веб-контекста для данного блока приложения. Например, чтобы получить доступ к веб-клиенту по адресуhttp://localhost:8080/sales
, выполните следующую команду:java -jar app.jar -contextName sales
Чтобы подключиться к веб-клиенту по адресу
http://localhost:8080
, выполните команду:java -jar app.jar -contextName /
-
frontContextName
- имя веб-контекста для Polymer UI (имеет смысл для единого, web или portal JAR файлов).
UberJAR не работает корректно с аргументами
frontContextName
,contextName
для фронтенд клиентов на базе React.-
portalContextName
- имя веб-контекста для модуля portal, работающего в едином JAR. -
jettyEnvPath
- путь к файлу окружения Jetty, который переопределяет настройки, заданные внутри JAR параметром сборкиcoreJettyEnvPath
. Может быть как абсолютным путём, так и относительным рабочего каталога. -
jettyConfPath
- путь к файлу конфигурации сервера Jetty, который переопределяет настройки, заданные внутри JAR параметром сборкиwebJettyConfPath/coreJettyConfPath/portalJettyConfPath
. Может быть как абсолютным путём, так и относительным рабочего каталога.
-
- Домашний каталог приложения
-
По умолчанию домашним каталогом является рабочий каталог приложения. Это означает, что каталоги приложения будут созданы в каталоге, из которого приложение запущено. Домашний каталог может быть также указан в системном свойстве
app.home
. Например, чтобы иметь домашний каталог в/opt/app_home
, необходимо указать следующее в командной строке:java -Dapp.home=/opt/app_home -jar app.jar
- Логирование
-
Если необходимо изменить настройки логирования, заданные внутри JAR, то можно передать системное свойство Java
logback.configurationFile
с URL для загрузки внешнего конфигурационного файла, например:java -Dlogback.configurationFile=file:./logback.xml -jar app.jar
Здесь подразумевается, что файл
logback.xml
расположен в папке, из которой запускается приложение.Для правильного задания каталога логов убедитесь, что свойство
logDir
вlogback.xml
указывает на подкаталогlogs
домашнего каталога приложения:<configuration debug="false"> <property name="logDir" value="${app.home}/logs"/> <!-- ... -->
- Задание свойств приложения на этапе развертывания
-
Возможен вариант задания свойств приложения уже в среде развертывания. Таким образом могут указываться значения, недоступные на момент сборки (например по соображениям безопасности).
Свойства приложения могут быть заданы в файле
local.app.properties
, через переменные окружения ОС или системные свойства Java, переданные в командной строке.Файл
local.app.properties
должен находиться в домашнем каталоге приложения. Им является текущий рабочий каталог, если вы не задали иной путь в аргументе командной строки-Dapp.home=some_path
. Например:local.app.propertiescuba.web.loginDialogDefaultUser = <disabled> cuba.web.loginDialogDefaultPassword = <disabled>
Если используются переменнные окружения ОС, то можно задавать имя свойства в верхнем регистре и с точками замененными на подчеркивания:
export CUBA_WEB_LOGINDIALOGDEFAULTUSER="<disabled>" export CUBA_WEB_LOGINDIALOGDEFAULTPASSWORD="<disabled>"
Системные свойства Java должны быть указаны в командной строке (имейте в виду, что они будут видны в менеджерах задач и в выводе команды
ps
):java -Dcuba.web.loginDialogDefaultUser=<disabled> -Dcuba.web.loginDialogDefaultPassword=<disabled> -jar app.jar
Переменнные окружения ОС переопределяют значения, заданные в файлах
app.properties
, системные свойства Java переопределяют и переменные окружения, и файлы. - Остановка приложения
-
Корректно остановить приложение можно следующими способами:
-
Нажав Ctrl+C в окне терминала, в котором работает приложение.
-
Выполнив
kill <PID>
в Unix-like системе. -
Послав ключ (последовательность символов) остановки на порт, указанный в командной строке запущенного приложения. Следующие аргументы командной строки имеют отношение к остановке:
-
stopPort
- порт прослушивания и посылки ключа остановки. -
stopKey
- ключ остановки. Если не указан, используетсяSHUTDOWN
. -
stop
- остановить другой процесс отсылкой ключа.
-
Например:
# Start application 1 and listen to SHUTDOWN key on port 9090 java -jar app.jar -stopPort 9090 # Start application 2 and listen to MYKEY key on port 9090 java -jar app.jar -stopPort 9090 -stopKey MYKEY # Shutdown application 1 java -jar app.jar -stop -stopPort 9090 # Shutdown application 2 java -jar app.jar -stop -stopPort 9090 -stopKey MYKEY
-