java system.getenv (HOME) возвращает каталог tomcat6 - PullRequest
1 голос
/ 19 июня 2011

Привет, когда субъект читает

System.getenv("HOME")

в моем классе действий (struts2) и разверните это как войну в

/var/lib/tomcat6/webapps/

Когда я запускаю свой класс, getenv HOME возвращает

/var/lib/tomcat6

Может кто-нибудь сказать мне, что происходит? Я даже проверил это в отдельном классе Java. Возвращает правильную стоимость дома. Пробовал на оболочке также echo $HOME и он дает правильный вывод.

Запуск в Ubuntu 10.04.

1 Ответ

1 голос
/ 19 июня 2011

Я ДУМАЮ, что я понял, в чем проблема ... Мой проект был развернут с разрешениями для "tomcat6 tomcat6", поэтому, когда я получаю HOME, он дает мне дом tomcat.Я прав?

Нет.

Проблема заключается в том, что ваша служба tomcat6 настроена для работы в качестве пользователя "tomcat".(Обычно в скрипте init.d / tomcatd есть переменная, которая делает это ...) ЭТО СДЕЛАНО ПО ПРИЧИНАМ БЕЗОПАСНОСТИ.Не меняйте его, если вы не сделали правильную оценку риска.

Что вам действительно нужно сделать, так это изменить свое веб-приложение, чтобы оно не ожидало, что $ HOME будет >> вашим << домашним каталогом,Вместо этого создайте файл свойств, специфичный для веб-приложения, в котором указано расположение этого внешнего (для tomcat) каталога.Или, что еще лучше (и лучшая практика!), Измените ваше приложение, чтобы оно вообще не ссылалось на внешний каталог. </p>

...