java - 使用 buildpack 中的 SQL 驱动程序在 Pivotal Cloud Foundry 上部署具有多个数据源的应用程序

标签 java mysql cloud-foundry

我有一个 war 应用程序,我希望使用多个 mysql 服务来部署和配置它。当应用程序绑定(bind)到一个mysql服务时,PCF会使用java-buildpack下载的SQL驱动程序自动配置数据源。我想避免将驱动程序打包在 war 文件中。有没有办法在不进行自动配置的情况下使用构建包中的驱动程序?

java-buildpack documentation on GitHub似乎建议如果服务被命名或标记为“mysql”,那么驱动程序将被下载并放置在类路径上:

A user-provided MariaDB or MySQL service must have a name or tag with mariadb or mysql in it so that the MariaDB JDBC Framework will automatically download the JDBC driver JAR and place it on the classpath.

但是我的两个服务都标有“mysql”:

"name": "database1",
"tags": [
  "mysql",
  "relational"
]

但是当应用程序启动时返回错误:

Caused by: java.lang.IllegalStateException: Cannot load driver class: com.mysql.jdbc.Driver

并且在暂存应用程序时,不会下载 JDBC 驱动程序。

最佳答案

documentation link you referenced还列出了要执行的功能的要求:

Existence of a single bound MariaDB or MySQL service and no provided MariaDB or MySQL JDBC JAR.

关键词是单一。这就是为什么当您绑定(bind)了两个服务时它不起作用的原因。

我不确定你能做多少事情。当只有一个 MySQL 服务绑定(bind)但不超过一个时,它会起作用。这就是定义的行为。

接下来的选项:提交 Github 问题并请求支持您的用例,将 JDBC 驱动程序与您的应用程序打包。

关于java - 使用 buildpack 中的 SQL 驱动程序在 Pivotal Cloud Foundry 上部署具有多个数据源的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52061757/

相关文章:

java - 在 Canvas 上绘图并刷新

java - 如何将多个元素映射到 JAXB 中的单个类

java - 我有错误检查手册对应的mysql服务器版本

java - 是否可以为 Tomcat 容器编写非 HTTP servlet?

Java:ProcessBuilder:运行 Java 文件

java - 堆栈溢出错误: How would I write this method Iteratively?

javascript - 单击搜索栏转到链接

php - 使用 MySQLi 时如何防止 SQL 注入(inject)?

tomcat - 如何为部署在 CloudFoundry 上的应用程序配置公共(public)端口?

java - 如何在运行时将验证公钥添加到 open liberty microprofile 中的 mp-jwt 以供 Cloud Foundry 使用?