在Tomcat下运行的应用程序的环境变量

时间:2010-11-19 19:51:17

标签: tomcat coding-style jvm environment-variables

好的,这很难看。我有一个.war文件,运行在Linux盒子(CentOS 5)上的Tomcat 6实例中。 Java代码包括对Runtime.exec(cmd)方法的调用,在该方法中,它会弹出一个运行本机应用程序的1行shell脚本。 (R,如果你很好奇...)一切都很好,除了本机应用程序需要设置一些环境变量,它可以做一些事情,如访问数据库。我无法编辑java代码并重新编译。我想我可以编辑.war文件的内容,但我不知道要编辑什么。但我认为没关系 - 子进程通常会继承父进程的环境,对吧?所以我认为我只需要JVM的环境来包含ORACLE_HOME和其他环境变量。

我发现你可以将变量放在bin/setenv.sh文件中,这些变量在tomcat进程加载时使用。我尝试在那里添加环境变量,但这不起作用。

所以:

  1. 有没有办法设置将继承到JVM进程级别的环境变量,以便我的exec'd应用程序也继承这些变量?
  2. 如果没有,我应该在.war文件中编辑什么来手动设置这些变量? (那有多难啊?)
  3. 感谢您帮助我让这个丑陋的黑客工作!

1 个答案:

答案 0 :(得分:0)

嗯,#2的答案很简单。正如我所说,exec()调用调用运行应用程序的shell脚本。我刚刚打开了.war文件,并向其中添加了一些export FOO=bar行,将结果放回到tomcat webapps目录中,然后就可以了。

但是,很丑陋。如果有人对选项#1有一个很好的答案,他们会因为回答这个问题而获得赞誉......

相关问题