我们目前有一台运行2个webapps的Tomcat服务器;一个用于美国站点,另一个用于专门用于欧盟的webapp。我们在功能上对app& db沿着这些线;当前运行的美国站点的一个逻辑实例,以及欧盟站点的另一个逻辑实例。
目前,我们的发布流程如下: - 我们在Tomcat上部署了两个完全相同的战争,除了在重新启动tomcat之前我们更改属性文件以识别US或EU webapp
我们想要做的是自动完成整个过程。我想部署我的2场战争,而不是修改属性文件,但也没有真正改变我的构建脚本。有关如何删除此手动步骤的任何建议吗?
答案 0 :(得分:0)
如果您使用的是Ant构建脚本,则可以使用filterset
命令的copy
功能来设置属性。
你需要:
您的模板文件:
...
locale = @deploy.locale@
other.stuff.int = 123
other.stuff.string = test string
...
(请注意@deploy.locale@
占位符)
您的美国房产档案:
...
deploy.locale = US
...
您的欧盟财产档案:
...
deploy.locale = EU
....
现在,您可以在Ant构建文件中执行以下操作:
你也可以停止&在构建脚本中启动tomcat。 以下是复制模板的方法:
<copy todir="${tmp.dir}" overwrite="true">
<fileset dir="templates">
<include name="template.properties" />
</fileset>
<filterset filtersfile="us.properties" />
</copy>
...
<copy todir="${tmp.dir}" overwrite="true">
<fileset dir="templates">
<include name="template.properties" />
</fileset>
<filterset filtersfile="eu.properties" />
</copy>
有关其他Ant部署提示,请参阅this post。
答案 1 :(得分:0)
您也可以通过编程方式执行此操作。首先,您必须实现aorg.apache.catalina.LifeCycleListener。它包含一个方法
/**
* Acknowledge the occurrence of the specified event.
*
* @param event LifecycleEvent that has occurred
*/
public void lifecycleEvent(LifecycleEvent event);
对于event参数,您必须侦听上下文部署的事件。您可以查看http://tomcat.apache.org/tomcat-7.0-doc/config/listeners.html的一些示例。
您将把侦听器放入Tomcat的server.xml文件中
<Listener className="your implementation class name"/>
我希望它有所帮助