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