是否可以覆盖启动脚本中的Tomcat7端口、appBase和Realm属性(位于server.xml中)



在生产环境中,我们有许多不同的Tomcats实例。每个Tomcat都在不同的端口上侦听,使用不同的数据库作为JDBCRealm,并从不同的appBase目录运行应用程序。以下是具有实例特定值的参数:

  • ServerConnector元素的port属性
  • Realm元素的connectionURLconnectionNameconnectionPassword属性
  • Host元素的appBase属性

当有人(重新)部署(新的)Tomcat实例时,必须替换server.xml(来自源代码管理)来为这些参数设置特定于实例的值。

我更希望在不同的实例中使用相同的server.xml。所以我的问题是,是否可以从启动脚本中覆盖/重新定义这些参数?

是的,但您需要参数化您的server.xml。

例如,对于http连接器,您可以这样做:

<Connector port="${port.http}" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="${port.https}" />

然后创建/编辑setenv。[bat|sh]并添加一些类似于(针对Windows)的内容:

set CATALINA_OPTS=-Dport.http=10180 -Dport.https=10143

不要忘记,您还需要参数化关闭的端口。此技术适用于server.xml、context.xml和web.xml中的任何属性值。

最新更新