【问题标题】:One application code with multiple contextpaths/deployments to connect to different databases一个具有多个上下文路径/部署的应用程序代码以连接到不同的数据库
【发布时间】:2018-12-05 16:07:14
【问题描述】:

在尝试将 WebSphere 应用程序迁移到 Tomcat 并部署到 Pivotal Cloud Foundry 时,我们的团队遇到了一个要求,以使相同的应用程序连接到两个不同的数据库,这些数据库具有完全相同的架构和不同的数据,本质上是部署了相同的应用程序代码不同的路径,并能够根据访问应用程序所调用的 URL 连接到数据库。

目前,我们在 Websphere 中处理这种情况,使用部署脚本将应用程序部署到两台服务器中,并在 JNDI 中提供不同的数据库详细信息,并使用服务器名称访问应用程序。

我们使用 Jenkins 将应用程序部署到 PCF 上。

尝试使用 maven 部署到不同的上下文路径,但没有帮助并最终陷入循环,有没有人遇到过这样的情况,任何想法将不胜感激。

【问题讨论】:

    标签: java tomcat jenkins websphere cloud-foundry


    【解决方案1】:

    我认为有很多方法可以解决这个问题。

    1. 修改您的应用程序,让它知道并让您选择。也许有一个查询参数可供选择,或者/dev/blah 转到一个数据库,/test/blah 转到另一个数据库。

    2. 两次推送同一个应用,但每个应用绑定不同的数据库和路由。

    3. 尝试在 CF 上的一个应用中的 Tomcat 内运行相同应用代码的两个实例。

    其中,#1 很好,但可能需要更改代码。 #2 将是我的选择,因为它很快就可以完成,#3 将是很多工作,因为您将与 Java buildpack 作斗争,不推荐这样做。


    要完成 #2,您需要执行以下操作:

    1. 将您的应用代码作为 app-A 推送。
    2. 绑定数据库服务。
    3. 使用诸如my-cool-app.example.com/app-a 之类的上下文路径映射路由。
    4. 启动您的应用程序。

    对 app-B 重复相同的操作,但使用不同的数据库和路由/路径(即 my-cool-app.example.com/app-b)`。

    如果您要部署 WAR 文件,则需要告诉 Java buildpack 在上下文路径上部署您的应用程序(它应该与您设置的路由上下文路径匹配)。

    cf set-env my-application JBP_CONFIG_TOMCAT '{tomcat: { context_path: /app-a }}'
    

    https://github.com/cloudfoundry/java-buildpack/blob/master/docs/container-tomcat.md#common-configurations

    如果您使用 Spring Boot 和 JAR 部署,则需要设置 server.contextPath=/app-a

    希望有帮助!

    【讨论】:

    • 谢谢,答案有帮助!
    猜你喜欢
    • 2011-01-14
    • 2013-02-27
    • 2016-07-04
    • 2020-04-13
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多