Tomcat 8.5 Windows服务传递Java属性的方法咨询
Tomcat 8.5 Windows服务传递Java属性问题解答
嗨,针对你把Tomcat 8.5作为Windows服务运行时遇到的参数传递问题,我整理了详细的解答,希望能帮到你:
1. 如何通过-D参数向服务启动传递Java属性?
最便捷的方式是用Tomcat自带的tomcat8w.exe工具(对应8.5版本):
- 找到Tomcat安装目录下的
bin文件夹,双击运行tomcat8w.exe - 在弹出的配置窗口中切换到Java标签页
- 在Java Options区域直接添加你的
-D参数,比如-Dmy.custom.property=testValue,多个参数可以每行一个或者用空格分隔 - 设置完成后点击「确定」,重启Tomcat服务即可生效
2. 是否可通过Windows系统服务管理器的“启动参数”对话框传递参数?若可以,语法是什么?
可以,但语法需要符合Tomcat服务wrapper的规则,不如tomcat8w.exe直观:
- 打开Windows服务管理器,找到你的Tomcat服务,右键选择「属性」
- 在「常规」标签页的「启动参数」输入框中,按照
//JvmOptions=-D参数名=参数值的格式填写,比如//JvmOptions=-Dmy.property=hello - 如果有多个参数,用分号分隔:
//JvmOptions=-Dprop1=val1;-Dprop2=val2 - 设置后重启服务生效,不过更推荐用
tomcat8w.exe来配置,避免格式出错
3. 是否需要在Tomcat的启动bat文件中硬编码该属性?如果需要,对应哪些文件?
完全不需要!因为你是用Windows服务模式运行Tomcat,而startup.bat、catalina.bat这类启动脚本是给手动启动Tomcat用的,服务模式不会读取这些脚本里的配置。硬编码到bat文件不仅对服务模式无效,还会让配置变得不灵活,所以别这么做。
4. 是否存在其他实现方式,比如使用CATALINA_OPTS系统变量?
当然有,这也是一种常用的方式:
- 系统环境变量方式:在Windows系统中添加系统环境变量
CATALINA_OPTS,将你的-D参数填入值中,比如-Dmy.app.config=C:\config\props。添加完成后重启Tomcat服务,服务wrapper会自动读取这个变量的配置 - setenv.bat方式:在Tomcat的
bin目录下新建setenv.bat文件(如果不存在的话),在里面写入set CATALINA_OPTS=%CATALINA_OPTS% -Dmy.property=value。不过要注意,服务模式下默认不会读取这个文件,除非你在tomcat8w.exe的配置中指定加载它,所以更推荐用系统环境变量的方式
内容的提问来源于stack exchange,提问作者megloff




