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/

相关文章:

tomcat - 当 Webapp 在不同的服务器上运行时,Solr 结果会有所不同。编码问题?

java.lang.OutOfMemory错误: unable to create new native thread message but not a lot of threads running

java - @ConditionalOnProperty 用于列表或数组?

iphone - 属性声明中的非原子和保留是什么意思

java - 在 servlet 的 doGet() 中安全地使用静态编译模式 - matcher.replaceAll()

java - 如何在 servlet 中使用来自 JSP 文件的 Vector?

tomcat - Grails 自定义错误页面 (500) 和 Tomcat

ios - Objective-C Singleton 中的变量被重置

maven - 导入 Material list 中使用的 maven 属性(bom)

properties - 选项、设置、属性、配置、首选项——何时以及为什么?