我正在使用eclipse进行Web应用程序编码。在这个程序中,我传递了如下环境变量:
1.项目--〉运行方式--〉运行配置。然后选择环境选项卡。
1.添加名为APP_MASTER_PASSWORD
新环境变量及其值
我可以在java代码中以System.getenv("APP_MASTER_PASSWORD")
的形式访问这个值。
但现在我想把这个环境变量传递给Tomcat,并在应用程序中访问它,而不是通过Eclipse传递。
那么我如何将这样的变量传递给tomcat呢?
我在谷歌上搜索了一下,但没有找到任何解决办法。
8条答案
按热度按时间368yc8dk1#
您可以使用
setenv.bat
或.sh
将环境变量传递给Tomcat。创建
CATALINA_BASE/bin/setenv.bat
或.sh
文件,并在其中放入以下行,然后启动Tomcat。在Windows上:
在类似Unix的系统上:
oxalkeyp2#
在这种情况下,您应该使用System属性而不是环境变量。编辑JAVA_OPTS的Tomcat脚本,并添加如下属性:
-DAPP_MASTER_PASSWORD=foo
并在代码中编写
System.getProperty("APP_MASTER_PASSWORD");
个您也可以在Eclipse中执行此操作,而不是在JAVA_OPTS中,将VM参数中的行复制到运行配置中。
gajydyqb3#
由
<Environment>
标记指定的环境条目是JNDI,可使用java:/comp/env
下的InitialContext.lookup访问。您可以通过对InitialContext构造函数和应用程序资源文件使用环境参数来指定JNDI的环境属性。System.getEnv()
是关于tomcat进程本身的系统环境变量。要使用bash命令设置环境变量,请执行以下操作:
export TOMCAT_OPTS=-Dmy.bar=foo
并启动Tomcat:./startup.sh
要检索系统属性bar
的值,请使用System.getProperty()
。System.getEnv()
可用于检索环境变量,例如TOMCAT_OPTS
。ca1c2owp4#
环境变量可以通过在tomcat安装目录的
bin
文件夹中创建一个setenv.bat
(windows)或setenv.sh
(unix)文件来设置。但是,环境变量不能从您的代码中访问。系统属性由java进程的
-D
参数设置。您可以在环境变量JAVA_OPTS
中定义java起始参数。我的建议是结合这两种机制。在你的
apache-tomcat-0.0.0\bin\setenv.bat
中写上:并在Java代码中编写:
ki1q1bka5#
对于Unix和Mac系统,请转到tomcat文件夹内的/bin/setenv.sh
添加下面的行
export JAVA_OPTS="$JAVA_OPTS -DAPP_MASTER_PASSWORD=mypass"
现在,
System.getProperty("APP_MASTER_PASSWORD")
将返回"mypass"
hk8txs486#
如果您从Eclipse(“服务器”视图)启动Tomcat,那么您应该有一个名为“Apache Tomcat / Tomcat..."的“运行/运行配置”(菜单)条目。当您在运行配置列表中选择此条目时,您会看到一个带有几个选项卡的窗口,其中一个选项卡标记为“环境”。在此您可以为Tomcat配置环境变量。请确保在此之后重新启动Tomcat。
pbwdgjma7#
在Windows中,如果找不到setenv.bat,请在catalina.bat的第2行(在@echo off之后)添加以下内容:
设置应用程序主密码=foo
可能不是最好的方法,但很有效
1yjd4xko8#
我的解决方法是:
bash_profile
中设置了环境变量,但是Tomcat没有看到该变量。1.不工作〉〉setenv.sh:Apache的建议是在
setenv.sh
文件中有用户定义的环境变量,我做到了。1.THIS WORKED!!〉〉在对Tomcat启动脚本进行了一些研究之后,我发现使用
setenv.sh
设置的环境变量在启动过程中会丢失。因此,我不得不根据Apache的建议编辑我的catalina.sh
,这样就成功了。在
catalina.sh
的run命令中添加-DUSER_DEFINED
变量。这个问题可能是我的电脑本地的。其他人会有不同的问题。把我的答案添加到这篇文章中,以防有人在尝试了所有推荐的方法后仍然面临Tomcat看不到环境变量的问题。