在生产环境中,我们有许多不同的Tomcats实例。每个Tomcat都在不同的端口上侦听,使用不同的数据库作为JDBCRealm,并从不同的appBase目录运行应用程序。以下是具有实例特定值的参数:
Server
和Connector
元素的port
属性Realm
元素的connectionURL
、connectionName
、connectionPassword
属性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中的任何属性值。