2016-11-07 59 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配置工具,你將看不到環境變量的任何地方,但如果您運行該服務,它將會檢測到它。這就像隱藏的魔法。不知道爲什麼他們沒有把它包含在配置面板的某個地方。