如何将系统属性传递给作为Windows服务运行的Tomcat 7中托管的Web应用程序?

时间:2011-12-22 21:36:45

标签: java windows tomcat

互联网上有很多地方,建议通过以下任何(或全部)方法轻松实现:

  1. CATALINA_OPTS
  2. JAVA_OPTS
  3. TOMCAT_OPTS
  4. set语句放在tomcat的bin文件夹中的 setenv.bat 文件中
  5. 我的问题是,我已经尝试了以上所有内容,而我的网络应用程序仍然没有看到我的系统属性!

    这是我正在做的事情:

    1. 停止tomcat7服务
    2. 在系统环境中设置CATALINA_OPTS=-Dabc.def=true
    3. 在系统环境中设置JAVA_OPTS=-Dabc.def=true
    4. 在系统环境中设置TOMCAT_OPTS=-Dabc.def=true
    5. 将以上所有内容放入 c:\ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ bin \ setenv.bat (似乎完全多余,但以防万一)
    6. 启动tomcat7服务
    7. 使用Process Explorer工具检查tomcat7进程的环境 - 环境是否正确,我确实看到CATALINA_OPTSJAVA_OPTS以及TOMCAT_OPTS等于-Dabc.def=true < / LI>
    8. 运行我的网络应用程序,这是一个简单的servlet,将所有系统属性转储到响应流中 - abc.def不在其中
    9. 请让我摆脱痛苦,告诉我该怎么做。

2 个答案:

答案 0 :(得分:10)

对于Tomcat服务,启动设置存储在注册表中的Options键下:

HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat<X>\Parameters\Java

(在需要的地方替换适当的Tomcat版本。)

编辑:

在64位Windows上,注册表项为:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat<X>\Parameters\Java

即使Tomcat在64位JVM下运行。

答案 1 :(得分:0)

我知道这篇文章将近9年了,但以为有人会觉得这篇文章有用。

尽管@prunge和@mark答案非常准确,并且按照它们的逻辑,我能够向Windows上运行的tomcat 7实例添加系统属性,但是有一种更简单的方法。

在Tomcat的安装目录中,有一个可以运行的exe文件

%INSTALL_DIRECTORY%\bin\tomcat7w.exe

这将打开Tomcat属性窗口,您可以在其中控制服务,即启动和停止tomcat,并且还有一个标签(Java),可让您同时设置Java属性

enter image description here

滚动到该面板的“ Java选项”下方,然后添加系统属性

-Dpropertyname=value

然后导航回到“常规”标签并重新启动tomcat

我已经对此进行了测试,并且我的grails应用现在可以查看我的属性。我使用以下Groovy代码将属性删除

System.properties.getProperty("propertyname")

在Windows注册表中添加系统属性也显示在此窗口中,因此它也是一件同样的事情,在我看来,此应用程序稍微方便些。

希望这对其他人有帮助