将用户定义的环境变量传递给tomcat

时间:2013-06-10 07:54:58

标签: java tomcat web-applications

我正在使用eclipse进行Web应用程序编码。在这个我传递的环境变量如:

  1. 项目 - >以 - >运行运行配置。并选择了Environment选项卡。
  2. 添加名称为APP_MASTER_PASSWORD的新环境变量及其值。
  3. 我可以在java代码中以System.getenv("APP_MASTER_PASSWORD")访问此值。

    但是现在我想将这个环境变量传递给tomcat并在应用程序中访问它而不是通过eclipse传递它。

    那么如何将这样的变量传递给tomcat呢?

    我用Google搜索了一下。但我没有得到任何解决方案。

    谢谢。

8 个答案:

答案 0 :(得分:31)

您可以使用setenv.bat或.sh将环境变量传递给Tomcat。

创建CATALINA_BASE / bin / setenv.bat或.sh文件并在其中添加以下行,然后启动Tomcat。

在Windows上:

set APP_MASTER_PASSWORD=foo

在类Unix系统上:

export APP_MASTER_PASSWORD=foo

答案 1 :(得分:18)

在这种情况下,您应该使用System属性而不是环境变量。编辑JAVA_OPTS的tomcat脚本并添加如下属性:

-DAPP_MASTER_PASSWORD=foo

并在您的代码中写下

System.getProperty("APP_MASTER_PASSWORD");

您也可以在Eclipse中执行此操作,而不是使用JAVA_OPTS,在运行配置中复制VM参数中的行。

答案 2 :(得分:9)

<Environment>标记指定的环境条目是JNDI,可以使用java:/comp/env下的InitialContext.lookup访问。您可以使用JNDI构造函数和InitialContext的环境参数为application resource files指定环境属性。

System.getEnv()是关于tomcat进程本身的系统环境变量。

使用bash命令设置环境变量: export TOMCAT_OPTS=-Dmy.bar=foo 并启动Tomcat: ./startup.sh 要检索系统属性bar的值,请使用System.getProperty()System.getEnv()可用于检索环境变量,即TOMCAT_OPTS

答案 3 :(得分:0)

如果是Windows,如果找不到setenv.bat,请在catalina.bat的第2行(@echo off之后)添加: SET APP_MASTER_PASSWORD = foo

可能不是最好的方法,但有效

答案 4 :(得分:0)

如果您从Eclipse启动Tomcat(&#34;服务器&#34;视图),那么您应该有一个&#34;运行/运行配置&#34; (菜单)条目称为#34; Apache Tomcat / Tomcat ...&#34;。当您在运行配置列表中选择此条目时,您将获得一个包含多个选项卡的窗口,其中一个选项卡标有&#34; Environment&#34;。在那里,您可以为Tomcat配置环境变量。务必在事后重启Tomcat。

答案 5 :(得分:0)

可以通过在tomcat安装目录的setenv.bat文件夹中创建一个setenv.sh(windows)或bin(unix)文件来设置

环境变量 。但是,在您的代码中将无法访问环境变量。

系统属性由Java进程的-D自变量设置。您可以在环境变量JAVA_OPTS中定义Java起始参数。

我的建议是这两种机制的组合。在您的apache-tomcat-0.0.0\bin\setenv.bat中写:

set JAVA_OPTS=-DAPP_MASTER_PASSWORD=password1

,然后在您的Java代码中写:

System.getProperty("APP_MASTER_PASSWORD")

答案 6 :(得分:0)

对于Unix和Mac系统,请转到tomcat文件夹中的/bin/setenv.sh

添加以下行

export JAVA_OPTS="$JAVA_OPTS -DAPP_MASTER_PASSWORD=mypass"

现在System.getProperty("APP_MASTER_PASSWORD")将返回"mypass"

答案 7 :(得分:0)

我的解决方案:

  1. 不起作用>>设置为系统环境变量:我已经在我的Mac parameters[parameters.Length - 1]中设置了环境变量,但是,Tomcat没有看到该变量。

  2. 不起作用>> setenv.sh:Apache的建议是在bash_profile文件中包含用户定义的环境变量,而我做到了。

  3. 这已解决! >> >>在对Tomcat启动脚本进行了一些研究之后,我发现使用setenv.sh设置的环境变量在启动过程中丢失了。因此,我不得不根据Apache的建议编辑setenv.sh,从而达到了目的。

catalina.sh的run命令中添加-DUSER_DEFINED变量。

catalina.sh

P.S:此问题可能是我的计算机本地的。其他人会有不同的问题。万一尝试了所有推荐的方法后,仍然有人遇到Tomcat无法看到环境变量的问题,我可以在这篇文章中添加我的答案。

相关问题