Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tomcat 在自动部署web应用程序之前自定义它 应用程序场景_Tomcat_Cloud_War_Web Deployment - Fatal编程技术网

Tomcat 在自动部署web应用程序之前自定义它 应用程序场景

Tomcat 在自动部署web应用程序之前自定义它 应用程序场景,tomcat,cloud,war,web-deployment,Tomcat,Cloud,War,Web Deployment,我在IaaS云服务上有一堆Tomcat服务器,所以它们都在我的控制之下 这些服务器(应用程序处于设计阶段)将运行任何Java应用程序容器软件,如Tomcat、JBoss、Websphere 除了什么解决方案是最好的,我还有一个web应用程序(WAR),我有完整的源代码。与任何体面的托管环境一样,设置新用户意味着将同一web应用程序的新副本部署到不同的应用程序上下文(例如,将WAR复制为newuser.WAR,让Tomcat吃掉它) 该应用程序完全基于Spring和Hibernate。它由Mave

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

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

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

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

由于我们在IaaS上运行,我们正在考虑向我们的管理软件添加一个需求。如果应用服务器宕机,重新部署它在不同节点上运行的webapps,和/或自动请求云提供商提供新机器(特别是当注册用户增加时)。我们的提供商目前没有PaaS服务。讨论支持Java Webapps的云提供商超出了范围

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

问题 关注自我管理和自动管理的Tomcat服务器,我们需要设计一个自动设置机制(集成到我们前面讨论的故障切换中)。我们现在的问题是设置DB连接字符串一些SpringBean的字符串属性(这些是共享的1对1密码)

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

问题是:

  • 从高层次的角度来看,您是否认为下面描述的方法存在重大缺陷
  • 您是否知道更智能的解决方案(可能有更简单的附加软件)来实现我需要做的事情
方法 由于我们有完整的源代码,一个Bash脚本就足够了:

  • 从SVN生产分公司下载一份新副本
  • 用所需的字符串替换
    hibernate.cfg.xml
    中的连接字符串(可能SVN分支中的文件包含用于替换字符串的占位符)
  • 逐字替换Spring配置文件中的占位符
  • 以新名称复制到Tomcat webapp文件夹
  • 等待Tomcat自动部署

  • Spring支持占位符

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

    大多数情况下,占位符用于定义DB连接(可能是为了解决hibernate配置需要)

    因为有几种不同的方法可以检索配置,所以您应该使用大G来搜索案例的方法