在自动部署Web应用程序之前自定义Web应用程序

时间:2013-02-07 14:04:05

标签: tomcat cloud war web-deployment

应用场景

我在IaaS云服务上有一堆Tomcat服务器,所以它们都在我的控制之下。

这些服务器将(应用程序处于设计阶段)运行任何Java应用程序容器软件,例如Tomcat,JBoss,Websphere。

除了最好的解决方案之外,我还有一个Web应用程序(WAR),我有完整的源代码。与任何体面的托管环境一样,设置新用户意味着将同一Web应用程序的全新副本部署到不同的应用程序上下文(例如,将WAR复制为newuser.war并让Tomcat吃掉它。)

该应用程序完全基于Spring和Hibernate。它由Maven提供支持。

由于我们在IaaS上运行,因此我们考虑向我们的管理软件添加要求。如果应用程序服务器出现故障,则重新部署它在不同节点上运行的Web应用程序,和/或自动请求新提供程序的云提供程序供应(特别是在注册用户增加时)。我们目前尚未在我们的提供商处提供 PaaS服务。讨论支持Java Webapps的云提供商超出范围

配置需求

前面提到的webapp的每个实例都有自己的数据库(需要管理软件生成的特定连接字符串)。此外,我们需要在其字符串属性中自定义几个bean。

问题

专注于自我管理和可自动管理的Tomcat服务器,我们需要设计一个自动设置机制(集成在我们之前讨论过的故障转移中)。我们现在的问题是设置数据库连接字符串一些Spring bean的字符串属性(这些是共享的1对1密码)。

首先,我想到了一个可能的解决方案,但我不知道它在易用性和可管理性方面是否“最好”。

问题是:

  • 从高层面来看,您认为下述方法存在重大缺陷吗?
  • 您是否了解更智能的解决方案(可能更容易使用其他软件)来实现我的目标?

方法

由于我们有完整的源代码,Bash脚本可能就足够了:

  1. 从SVN制作分部下载新的副本
  2. hibernate.cfg.xml中的连接字符串替换为所需的连接字符串(可能SVN分支中的文件包含用于字符串替换的占位符)
  3. 直接替换Spring配置文件中的占位符
  4. 以新名称
  5. 复制到Tomcat webapp文件夹
  6. 等待Tomcat自动部署

1 个答案:

答案 0 :(得分:0)

Spring支持占位符。

最简单的方法是将属性文件放在类路径中(如果每个服务器只运行一个war,在Tomcat lib目录中,或者war / WEB-INF / class文件夹中有多个war)。

大多数情况下,占位符用于定义数据库连接(可能解决了你的hibernate配置需求)。

由于有几种不同的方法来检索配置,您应该使用big G来搜索案例的方法。