【问题标题】:Setting User Environment Variables for tomcat on Windows在 Windows 上为 tomcat 设置用户环境变量
【发布时间】:2017-03-20 07:20:09
【问题描述】:

我在 Windows 2012 上运行 tomcat 8。

我有一个需要设置用户环境变量才能运行的 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 服务运行时,我无法使用 System.getenv("MY_VAR"); 检索 MY_VAR 变量

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

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

我更喜欢在 tomcat 配置中设置变量的方法,而不是在 windows 配置中。

我的替代方法是在 tomcat 中使用 context.xml 文件并使用检索上下文设置的逻辑检索值。

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

【问题讨论】:

    标签: tomcat8 windows2012


    【解决方案1】:

    遇到了同样的问题,我刚刚设法解决了。

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

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

    您可以设置多个变量,方法是用分号 (;) 或井号 (#) 分隔它们。文档很清楚,但很难相信发生了什么,因为任何地方都没有视觉指示,这意味着如果你运行:

    tomcat8w //ES//YourServiceName 
    

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

    【讨论】:

    • 只是因为我偶然发现了这一点,所以对您的答案进行了一点补充:参数保存在 Windows 注册表中(至少在 x64 服务器操作系统中)WOW6432Node/Apache Software Foundation/Procrun 2.0/ Tomcat8/Parameters,有一个名为 Environment 的键,它保存 Tomcat 在作为服务启动时使用的环境变量。还有一些子键包含基本目录、jvm 目录等附加信息。
    • @DirkTrilsbeek 注册表项实际上不是一个键,而是参数键中名为 REG_MULTI_SZ 类型的 Environment 值。
    猜你喜欢
    • 2015-10-21
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 2022-01-25
    相关资源
    最近更新 更多