2016-11-07 65 views
2

我在windows 2012上运行tomcat 8.在Windows上为tomcat设置用户环境变量

我有一个web应用程序需要设置用户环境变量才能运行。

我可以成功启动tomcat和检索的变量是这样的:

set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_65 
set CATALINA_HOME=C:\TOOLS\apache-tomcat-8.0.30 

set CATALINA_BASE=C:\Users\ULUser\tomcat\myapp 
set MY_VAR=%CATALINA_BASE% 
set PATH=%CATALINA_ROOT%\bin;%PATH% 
set CATALINA_OPTS="-Djava.security.properties=%CATALINA_BASE%\conf\java.security.properties" 

%CATALINA_HOME%\bin\catalina.bat run 

但是,当我作为Windows服务运行我无法检索使用MY_VAR变量System.getenv("MY_VAR");

谷歌搜索并没有帮助,因为所有的页面显示如何设置Java和Tomcat变量,但不显示如何设置用户变量。

我无法为整个机器设置它,因为我有几个tomcat实例,每个实例都需要一个不同的环境变量。

我宁愿一种方法,涉及在tomcat配置中设置变量,而不是在Windows配置中。

我的选择是在tomcat中使用context.xml文件,并用检索上下文设置的逻辑来检索值。

我最初在超级用户上发布了这个,但是有人建议stackoverflow是这个问题的更好的地方。如果我在这里得到很好的答案,我会从超级用户中删除它。

回答

2

有同样的问题,我刚刚设法解决它。

从管理员命令提示执行以下命令:

tomcat8 //US//YourServiceName ++Environment varname=value 

可以通过将它们与分号分隔设置多个变量(;)或井号(#)。该文档是很清楚,你要是跑不过它只是很难相信任何事情的发生,因为没有视觉指示的任何地方,意思是:

tomcat8w //ES//YourServiceName 

得到GUI配置工具,你将看不到环境变量的任何地方,但如果您运行该服务,它将会检测到它。这就像隐藏的魔法。不知道为什么他们没有把它包含在配置面板的某个地方。