Tomcat + 管理属性文件

标签 tomcat properties

我们目前有一个运行 2 个 web 应用程序的 Tomcat 服务器;一个用于美国网站,另一个专门用于欧盟的网络应用程序。我们已经按照这些思路对应用程序和数据库进行了功能分区;一个逻辑实例用于当前正在运行的美国网站,另一个用于欧盟网站。

目前我们的发布流程如下: - 我们在 Tomcat 上部署了 2 个基本相同的 war,除了在重新启动 tomcat 之前我们更改了一个属性文件以识别美国或欧盟 webapp

我们想要做的是将整个过程自动化。我想部署我的 2 场 war ,既不修改属性文件,也不真正改变我的构建脚本。有关如何删除此手动步骤的任何建议?

最佳答案

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

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

您的模板文件:

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

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

您的美国属性(property)文件:

...
deploy.locale = US
...

您的欧盟属性(property)文件:

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

现在在您的 Ant 构建文件中,您可以:

  1. 删除 TMP 目录
  2. 将项目编译到TMP目录
  3. 复制模板属性文件合并到美国属性中
  4. 将TMP文件夹打包成war_for_us.war
  5. 将 war_for_us.war 复制到您的 tomcat webapps 目录中
  6. 复制模板属性文件合并到EU属性中
  7. 将TMP文件夹打包成war_for_eu.war
  8. 将 war_for_eu.war 复制到您的 tomcat webapps 目录中

您还可以在构建脚本中停止和启动 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>

参见 this post了解其他 Ant 部署技巧。

关于Tomcat + 管理属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4950632/

相关文章:

不需要访问属性时的Python属性与方法?

java - 如何将 "export"映射作为 Java EE 上的网站参数

tomcat - apache tomcat 服务意外结束

python属性样式

java - 我如何使用带有 jax-rs 的属性文件?

php - 在 WooCommerce 中获取购物车总计非格式化值作为 float

java - 如何使用 MQQueueConnectionFactory 连接到多实例队列管理器

oracle - 如何在 tomcat 中为 oracle 连接设置默认预取行大小

java - apache tomcat 8.0.9 没有突然启动

python - 如何组合数据类、属性和 lru_cache