db2 - 使用 Thorntail / Wildfly Swarm 配置 db2 数据源
问题描述
有没有人设法用 Thorntail / Wildfly Swarm 配置 db2 数据源?
据我了解:一旦我提取数据源部分,应该根据文档自动检测 db2 驱动程序(https://docs.thorntail.io/2.3.0.Final/#auto-detecting-jdbc-drivers_thorntail)。所以我唯一要做的就是在我的数据源中引用“ibmdb2”作为驱动程序名称,对吧?
pom.xml(使用 Thorntail 2.3.0.Final)
<dependency>
<groupId>io.thorntail</groupId>
<artifactId>datasources</artifactId>
</dependency>
<dependency>
<groupId>com.ibm.db2</groupId>
<artifactId>db2jcc_license_cu</artifactId>
<version>10.1</version>
</dependency>
<dependency>
<groupId>com.ibm.db2</groupId>
<artifactId>db2jcc4</artifactId>
<version>4.22.29</version>
</dependency>
项目默认值.yml
swarm:
context:
path: /
datasources:
data-sources:
MYDS:
driver-name: ibmdb2
connection-url: jdbc:db2://host:port/schema
user-name: user
password: password
目前我在启动时收到以下错误:
2019-05-02 09:07:52,747 INFO [org.wildfly.swarm.datasources] (main) THORN1003: Auto-detected JDBC driver for ibmdb2
2019-05-02 09:07:57,660 ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 16) WFLYCTL0013: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("jdbc-driver" => "ibmdb2")
]) - failure description: "WFLYJCA0114: Failed to load datasource class: com.ibm.db2.jdbc.DB2XADataSource"
解决方案
您在 JDBC 驱动程序自动检测代码中发现了一个错误。驱动程序(可能)被自动检测到,但配置错误。具体来说,这行代码将 XA 数据源类名称设置为com.ibm.db2.jdbc.DB2XADataSource
,但它并不存在。(这实际上是您的错误消息所说的,但我也通过查看 JDBC 驱动程序 JAR 来确认它。)正确的类名是com.ibm.db2.jcc.DB2XADataSource
. 我提交了THORN-2398并提交了带有修复的 PR。
我不确定是否有简单的解决方法,因为 JDBC 驱动程序自动检测是在应用所有配置后执行的。也许下面的黑客可能会奏效。像这样定义一个新的 JDBC 驱动程序project-defaults.yml
:
thorntail:
datasources:
jdbc-drivers:
mydb2:
driver-module-name: com.ibm.db2jcc
driver-xa-datasource-class-name: com.ibm.db2.jcc.DB2XADataSource
但保持其他一切完好无损。这意味着将有 2 个用于 DB2 的 JDBC 驱动程序,一个是自动检测的(它将创建com.ibm.db2jcc
模块),而您创建的第二个将搭载第一个创建的基础设施。如果可行,只需driver-name: ibmdb2
将数据源更改为driver-name: mydb2
.
如果这不起作用,您现在必须停止 JDBC 驱动程序自动检测,直到问题得到解决。
推荐阅读
- python - 我需要帮助在我的代码中形成 if else 条件
- arrays - Array Sum(求所有对角元素和边界元素的总和)
- python - SoundRecognition 不起作用,找不到 pyaudio 模块
- c# - C# applicationHost.config 未找到但存在
- http - 未来的颤振问题
- r - 将字符串转换为数字日期格式的问题 R
- python - 在 Python 中传播 gRPC 上下文
- smtp - 从 BUSINESS gmail 发送 SMTP 邮件(例如:abc@company.com) - PHP Mailer
- java - 如何将 Soap 字符串响应映射到 java 对象?
- python - 如果多进程仍然存在,则在一段时间后停止多进程