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

互联网上有很多地方,这表明它可以通过以下任何一种(或全部)方法轻松实现:

  1. 通过CATALINA_OPTS
  2. 通过JAVA_OPTS
  3. 通过TOMCAT_OPTS
  4. 通过将set语句放在tomcat的bin文件夹中的setenv.bat文件中

我的问题是,我已经尝试了上述所有,我的Web应用程序仍然看不到我的系统属性!

这是我在做什么:

  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_OPTSTOMCAT_OPTS等于-Dabc.def=true
  8. 运行我的web应用程序,这是一个简单的servlet将所有系统属性转储到响应stream – abc.def不在其中

请把我从痛苦中解救出来,告诉我如何去做。

对于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下运行也是如此。