【问题标题】:Environment variables for application running under Tomcat在 Tomcat 下运行的应用程序的环境变量
【发布时间】:2010-11-19 19:51:17
【问题描述】:

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

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

所以:

  1. 有没有办法设置将被继承到 JVM 进程级别的环境变量,以便我执行的应用程序也继承这些变量?
  2. 如果不是,我应该在 .war 文件中编辑什么来手动设置这些变量? (那有多丑??)

感谢您帮助我完成这个丑陋的黑客攻击!

【问题讨论】:

    标签: tomcat coding-style jvm environment-variables


    【解决方案1】:

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

    不过,丑得要命。如果有人对选项 #1 有一个好的答案,他们将因回答这个问题而获得荣誉......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 2015-07-31
      相关资源
      最近更新 更多