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

Nar*_*h J 19 java tomcat web-applications

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

  1. 项目 - >运行方式 - >运行配置.并选择环境选项卡.
  2. 添加名称APP_MASTER_PASSWORD及其值的新环境变量.

我可以在java代码中访问此值System.getenv("APP_MASTER_PASSWORD").

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

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

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

谢谢.

Shi*_*Kai 37

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

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

在Windows上:

set APP_MASTER_PASSWORD=foo

在类Unix系统上:

export APP_MASTER_PASSWORD=foo

  • 这有点晚了,但是...根据[Tomcat的文档](https://tomcat.apache.org/tomcat-7.0-doc/RUNNING.txt),创建setenv.sh应该适用于任何风格的Unix。catalina.sh脚本将检查setenv.sh是否存在,如果存在,则在启动过程中执行它。 (2认同)
  • `catalina.sh` 检查 `CATALINA_BASE/bin/setenv.sh` 和 `CATALINA_HOME/bin/setenv.sh` ,并执行它们(如果存在)。 (2认同)
  • 您可以创建一个 setenv.sh 脚本,如果它还没有的话 (2认同)

Ank*_*kit 19

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

-DAPP_MASTER_PASSWORD=foo

在你的代码中,写

System.getProperty("APP_MASTER_PASSWORD");

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


NIN*_*OOP 9

<Environment>标记指定的环境条目是JNDI,可以使用InitialContext.lookup进行访问java:/comp/env.您可以使用InitialContext构造函数和应用程序资源文件的environment参数为JNDI指定环境属性.

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

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

  • 今天是 CATALOINA_OPTS - 但除此之外,这就是刚才对我的帮助! (2认同)

sla*_*dan 7

可以通过在tomcat 安装目录的文件夹中创建setenv.bat(windows) 或setenv.sh(unix) 文件来设置环境变量bin。但是,环境变量将无法从您的代码中访问。

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

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

set JAVA_OPTS=-DAPP_MASTER_PASSWORD=password1
Run Code Online (Sandbox Code Playgroud)

并在您的 Java 代码中写入:

System.getProperty("APP_MASTER_PASSWORD")
Run Code Online (Sandbox Code Playgroud)


Iam*_*yAV 5

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

添加以下行

export JAVA_OPTS="$JAVA_OPTS -DAPP_MASTER_PASSWORD=mypass"

现在System.getProperty("APP_MASTER_PASSWORD")会回来"mypass"