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

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

Фреймворк получает путь к домашнему каталогу из системного свойства Java app.home. Обычно это свойство указывается в аргументе командной строки -D.

Если системное свойство 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.

При запуске 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, расположите каждое свойство в окне настроек сервиса на отдельной строке.