5.1. Домашний каталог приложения

Домашний каталог - это каталог файловой системы, в котором CUBA-приложение создает временные файлы, и где можно расположить конфигурационные файлы local.app.properties и logback.xml. Большинство каталогов приложения, описанных ниже расположены в домашнем каталоге. Файловое хранилище также использует по умолчанию подкаталог домашнего каталога.

Так как CUBA приложение создает разные файлы (временные файлы, файлы журналов и др.) в домашнем каталоге, то этот каталог должен быть доступен для записи для пользователя, под которым приложение запущено.

Фреймворк получает путь к домашнему каталогу из системного свойства Java app.home.

Рекомендуется задавать это свойство явно, используя аргумент командной строки -D при запуске сервера приложения.

Явное указание домашнего каталога

При запуске UberJAR - укажите путь к домашнему каталогу в аргументе командной строки -D, например:

java -Dapp.home=/opt/app_home -jar app.jar

При развертывании WAR-файла - установите app.home в аргументе командной строки -D в соответствующем скрипте запуска сервера приложения, либо другим специфичным для сервера способом. Например, в Tomcat создайте файл bin/setenv.sh следующего содержания:

CATALINA_OPTS="-Dapp.home=\"$CATALINA_BASE/work/app_home\" -Xmx512m -Dfile.encoding=UTF-8"

Если используется развертывание в Tomcat Windows Service, расположите каждое свойство на отдельной строке в поле Java Options окна настроек службы.

Автоопределение домашнего каталога

Если системное свойство app.home не указано в командной строке, оно устанавливается автоматически в соответствии со следующими правилами:

  1. Если приложение стартует как UberJAR, домашним каталогом становится текущий рабочий каталог процесса.

  2. Если установлено системное свойство catalina.base (т.е. приложение работает на Tomcat), домашний каталог устанавливается в ${catalina.base}/work/app_home.

  3. В противном случае, домашний каталог устанавливается в подкаталог .app_home домашнего каталога пользователя.

Варианты 2 и 3 имеют следующий недостаток: процедура инициализации Logback вступает в действие до того, как свойство app.home установлено, так что ссылки вида ${app.home} в logback.xml не будут работать и расположение лог-файлов (если оно задано с использованием такой ссылки) будет неопределенным. Кроме того, вы не сможете переопределить параметры логирования просто положив файл logback.xml в домашний каталог приложения - этот файл не будет найден процедурой инициализации.

При использовании быстрого развертывания на этапе разработки, начиная с CUBA 7.2 домашний каталог приложения устанавливается в каталог проекта deploy/app_home. Если ваш проект использует более старую версию платформы, каталоги приложения располагаются внутри подкаталогов conf и work Tomcat.