【问题标题】:Tomcat - Overriding catalina.properties from commandlineTomcat - 从命令行覆盖 catalina.properties
【发布时间】:2018-12-25 10:15:08
【问题描述】:

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

【问题讨论】:

    标签: java tomcat catalina system-properties


    【解决方案1】:

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

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

    【讨论】:

    • 我将提交功能请求,并尝试找到时间创建拉取请求。感谢您的澄清。
    猜你喜欢
    • 1970-01-01
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多