Tomcat +管理属性文件

时间:2011-02-09 21:24:44

标签: tomcat properties

我们目前有一台运行2个webapps的Tomcat服务器;一个用于美国站点,另一个用于专门用于欧盟的webapp。我们在功能上对app& db沿着这些线;当前运行的美国站点的一个逻辑实例,以及欧盟站点的另一个逻辑实例。

目前,我们的发布流程如下:   - 我们在Tomcat上部署了两个完全相同的战争,除了在重新启动tomcat之前我们更改属性文件以识别US或EU webapp

我们想要做的是自动完成整个过程。我想部署我的2场战争,而不是修改属性文件,但也没有真正改变我的构建脚本。有关如何删除此手动步骤的任何建议吗?

2 个答案:

答案 0 :(得分:0)

如果您使用的是Ant构建脚本,则可以使用filterset命令的copy功能来设置属性。 你需要:

  • 模板属性文件
  • 两个属性文件(每个webapp一个)

您的模板文件:

...
locale = @deploy.locale@
other.stuff.int = 123
other.stuff.string = test string
...

(请注意@deploy.locale@占位符)

您的美国房产档案:

...
deploy.locale = US
...

您的欧盟财产档案:

...
deploy.locale = EU
....

现在,您可以在Ant构建文件中执行以下操作:

  1. 擦除TMP目录
  2. 将项目编译到TMP目录
  3. 复制美国属性中合并的模板属性文件
  4. 将TMP文件夹包装成war_for_us.war
  5. 将war_for_us.war复制到tomcat webapps目录中
  6. 复制欧盟属性中合并的模板属性文件
  7. 将TMP文件夹包装成war_for_eu.war
  8. 复制tomcat webapps目录中的war_for_eu.war
  9. 你也可以停止&在构建脚本中启动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"/>

我希望它有所帮助