一个应用代码多个contextpaths/deployments连接不同的数据库
One application code with multiple contextpaths/deployments to connect to different databases
在尝试将 WebSphere 应用程序迁移到 Tomcat 并部署到 Pivotal Cloud Foundry 时,我们的团队遇到了一个要求,即让相同的应用程序连接到两个不同的数据库,这两个数据库具有完全相同的模式,但数据不同,本质上将相同的应用程序代码部署在不同的路径中,并能够根据为访问应用程序而调用的 URL 连接到数据库。
目前,我们在 Websphere 中处理这种情况,方法是使用部署脚本将应用程序部署到两个服务器中,并在 JNDI 中提供不同的数据库详细信息,并使用服务器名称访问应用程序。
我们使用 Jenkins 将应用程序部署到 PCF。
尝试使用 maven 部署到不同的上下文路径,但没有帮助并最终陷入循环,有没有人遇到过这样的情况,任何想法将不胜感激。
我认为您可以通过多种方式处理此问题。
修改您的应用程序,让它知道并让您选择。也许有一个查询参数 select 或 /dev/blah
转到一个数据库,而 /test/blah
转到另一个数据库。
同一个应用推送两次,但每个应用绑定不同的数据库和路由。
尝试在 CF 上的一个应用程序中 Tomcat 内 运行 同一应用程序代码的两个实例。
其中,#1 没问题,但可能需要更改代码。 #2 是我的选择,因为它做起来非常快,#3 会做很多工作,因为你会与 Java buildpack 作斗争,这是不推荐的。
要完成 #2,您需要执行以下操作:
- 将您的应用代码推送为 app-A。
- 绑定数据库服务。
- 使用上下文路径映射路由,例如
my-cool-app.example.com/app-a
。
- 启动您的应用程序。
对 app-B 重复相同的操作,但使用不同的数据库和 route/path(即 my-cool-app.example.com/app-b)`。
如果您正在部署 WAR 文件,您将需要告诉 Java buildpack 将您的应用程序部署到上下文路径上(它应该与您设置的路由上下文路径相匹配)。
cf set-env my-application JBP_CONFIG_TOMCAT '{tomcat: { context_path: /app-a }}'
如果您使用 Spring 引导和 JAR 部署,则需要设置 server.contextPath=/app-a
。
希望对您有所帮助!
在尝试将 WebSphere 应用程序迁移到 Tomcat 并部署到 Pivotal Cloud Foundry 时,我们的团队遇到了一个要求,即让相同的应用程序连接到两个不同的数据库,这两个数据库具有完全相同的模式,但数据不同,本质上将相同的应用程序代码部署在不同的路径中,并能够根据为访问应用程序而调用的 URL 连接到数据库。
目前,我们在 Websphere 中处理这种情况,方法是使用部署脚本将应用程序部署到两个服务器中,并在 JNDI 中提供不同的数据库详细信息,并使用服务器名称访问应用程序。
我们使用 Jenkins 将应用程序部署到 PCF。
尝试使用 maven 部署到不同的上下文路径,但没有帮助并最终陷入循环,有没有人遇到过这样的情况,任何想法将不胜感激。
我认为您可以通过多种方式处理此问题。
修改您的应用程序,让它知道并让您选择。也许有一个查询参数 select 或
/dev/blah
转到一个数据库,而/test/blah
转到另一个数据库。同一个应用推送两次,但每个应用绑定不同的数据库和路由。
尝试在 CF 上的一个应用程序中 Tomcat 内 运行 同一应用程序代码的两个实例。
其中,#1 没问题,但可能需要更改代码。 #2 是我的选择,因为它做起来非常快,#3 会做很多工作,因为你会与 Java buildpack 作斗争,这是不推荐的。
要完成 #2,您需要执行以下操作:
- 将您的应用代码推送为 app-A。
- 绑定数据库服务。
- 使用上下文路径映射路由,例如
my-cool-app.example.com/app-a
。 - 启动您的应用程序。
对 app-B 重复相同的操作,但使用不同的数据库和 route/path(即 my-cool-app.example.com/app-b)`。
如果您正在部署 WAR 文件,您将需要告诉 Java buildpack 将您的应用程序部署到上下文路径上(它应该与您设置的路由上下文路径相匹配)。
cf set-env my-application JBP_CONFIG_TOMCAT '{tomcat: { context_path: /app-a }}'
如果您使用 Spring 引导和 JAR 部署,则需要设置 server.contextPath=/app-a
。
希望对您有所帮助!