Tomcat-从命令行覆盖catalina.properties

时间:2018-12-25 10:15:09

标签: java tomcat catalina system-properties

我想在catalina.properties中拥有一个属性,并在某些情况下希望使用-D = propvalue从命令行覆盖它

这可能吗?

更具体地说,我想使用系统属性来控制server.xml中连接器的端口,如下所示:

    <Connector port="${custom.port}" sendReasonPhrase="true" maxThreads="200"/>

在catalina.properties中,我设置了属性: custom.port = 9000

我想保留它,但是在某些情况下,将替代项传递给tomcat,例如-Dcustom.port = 9001。

好像catalina.properties中的配置具有优先级,将被使用。这是意外行为。

是否有其他方法可以强制执行? 还有另一种在server.xml中具有默认值的方法吗?

    <Connector port="${custom.port:9000}" sendReasonPhrase="true" maxThreads="200"/>

如果系统属性不存在,它将被设置为9000。

1 个答案:

答案 0 :(得分:1)

在JVM启动时定义了Tomcat doesn't allow you to override properties,以覆盖catalina.properties中列出的内容。

这将是一个容易添加的功能,但是可能需要考虑一些安全性和/或职责分离。我的建议是提交Bugzilla enhancement request。如果您在GitHub上提供了补丁或请求请求,我们将把您放在changelog中。 :)