Переменные среды для приложения, запущенного под Tomcat - PullRequest
1 голос
/ 19 ноября 2010

ОК, это безобразно.У меня есть файл .war, который запускается в экземпляре Tomcat 6 на компьютере с Linux (CentOS 5).Java-код включает в себя вызов метода Runtime.exec(cmd), где он обрабатывается однострочным сценарием оболочки, который запускает собственное приложение.(R, если вам интересно ...) Все хорошо, за исключением того, что нативному приложению нужно установить некоторые переменные окружения, чтобы оно могло выполнять такие вещи, как доступ к базе данных.Я не могу редактировать код Java и перекомпилировать.Я полагаю, что мог бы отредактировать содержимое файла .war, но я не знаю, что редактировать.Но я думаю, что все в порядке - дочерние процессы обычно наследуют родительскую среду, верно?Поэтому мне просто нужно, чтобы среда JVM включала ORACLE_HOME и другие переменные среды, я думаю.

Я обнаружил, что вы можете поместить переменные в файл bin/setenv.sh, которые используются при загрузке процесса tomcat.Я попытался добавить туда переменные среды, но это не сработало.

Итак:

  1. Есть ли способ установить переменные среды, которые будут наследоваться вплоть до уровня процесса JVM, так что мое приложение exec'd также наследует эти переменные?
  2. Если нет, что я должен отредактировать в файле .war, чтобы установить эти переменные вручную?(И как это уродливо ??)

Спасибо, что помогли мне получить этот уродливый хак!

1 Ответ

0 голосов
/ 19 ноября 2010

Ну, ответ на # 2 прост.Как я уже сказал, вызов exec () вызывает скрипт оболочки, который запускает приложение.Я просто открыл .war-файл и добавил к нему несколько export FOO=bar строк, поместил результат обратно в каталог веб-приложений tomcat, и это сработало.

Хотя уродливо, черт возьми.Если у кого-то есть хороший ответ для варианта № 1, он получит кредит за ответ на этот вопрос ...

...