我正在使用eclipse进行Web应用程序编码。在这个我传递的环境变量如:
APP_MASTER_PASSWORD
的新环境变量及其值。我可以在java代码中以System.getenv("APP_MASTER_PASSWORD")
访问此值。
但是现在我想将这个环境变量传递给tomcat并在应用程序中访问它而不是通过eclipse传递它。
那么如何将这样的变量传递给tomcat呢?
我用Google搜索了一下。但我没有得到任何解决方案。谢谢。
答案 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)
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)
不起作用>>设置为系统环境变量:我已经在我的Mac parameters[parameters.Length - 1]
中设置了环境变量,但是,Tomcat没有看到该变量。
不起作用>> setenv.sh:Apache的建议是在bash_profile
文件中包含用户定义的环境变量,而我做到了。
这已解决! >> >>在对Tomcat启动脚本进行了一些研究之后,我发现使用setenv.sh
设置的环境变量在启动过程中丢失了。因此,我不得不根据Apache的建议编辑setenv.sh
,从而达到了目的。
在catalina.sh
的run命令中添加-DUSER_DEFINED
变量。
catalina.sh
P.S:此问题可能是我的计算机本地的。其他人会有不同的问题。万一尝试了所有推荐的方法后,仍然有人遇到Tomcat无法看到环境变量的问题,我可以在这篇文章中添加我的答案。