Tomcat - 从命令行覆盖 catalina.properties

Tomcat - Overriding catalina.properties from commandline

我想在 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。

Tomcat doesn't allow you to override properties 在 JVM 启动时定义以覆盖 catalina.properties.

中列出的那些

添加此功能很容易,但可能需要考虑一些安全性 and/or 职责分离问题。我的建议是提交 Bugzilla enhancement request. If you provide a patch or pull request on GitHub, we'll put you in the changelog。 :)