目标
将 Attunity 驱动程序添加到 JBoss 服务器,以便可以创建数据源。
我认为下面的错误是由于驱动程序没有正确加载。由于网络问题,数据源的初始化可能会失败。我想确保驱动程序被正确加载并且可以被 JBoss 使用。
如本问题末尾的更新部分所示,纯 JDBC 连接尝试会收到Connection refused
错误。这是否会导致以下问题部分中的错误?
什么是Attunity?- Attunity 是一个商业驱动程序,我们用它来创建到 COBOL 系统的 JDBC 连接。我们只在创建的连接上使用纯 SQL,而不是更多。Attunity 不支持休眠 ORM,但无论如何我们都不使用它。
问题
启动时出现以下错误:
13:21:11,535|ERROR|Controller Boot Thread|org.jboss.as.controller.management-operation|JBAS014612: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("data-source" => "attunity-ds")
]) - failure description: {"JBAS014771: Services with missing/unavailable dependencies" => [
"jboss.driver-demander.java:jboss/datasources/attunity-ds [jboss.jdbc-driver.com_attunity_jdbc] is missing",
"jboss.data-source.java:jboss/datasources/attunity-ds [jboss.jdbc-driver.com_attunity_jdbc] is missing"
]}
配置文件
持久性.xml
<persistence-unit name="attunity-unit" >
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/attunity-ds</jta-data-source>
<properties>
<!-- parameters for oracle -->
<property name="hibernate.connection.url" value="URL" />
<property name="hibernate.connection.driver_class" value="com.attunity.jdbc" />
<property name="hibernate.connection.username" value="USER" />
<property name="hibernate.connection.password" value="PASS" />
<property name="jboss.entity.manager.factory.jndi.name"
value="java:/entityManagerFactory/attunity" />
</properties>
</persistence-unit>
我的-ds.xml
我不知道这是如何转换为 jboss 配置文件的,我不知道在哪里可以找到结果(不在任何standalone.xml 文件中)。然而,我们证明了此处定义的数据源可以与其他驱动程序一起模拟。我们使用常规的 Oracle 驱动程序来测试数据源本身是否可以访问。
<datasource jndi-name="java:jboss/datasources/attunity-ds" pool-name="attunity-ds" enabled="true">
<connection-url>URL</connection-url>
<driver>com.attunity.jdbc</driver>
<pool>
<min-pool-size>1</min-pool-size>
<max-pool-size>2</max-pool-size>
<prefill>true</prefill>
</pool>
<security>
<user-name>USER</user-name>
<password>PASS</password>
</security>
</datasource>
module.xml(包含驱动程序EAP_HOME/modules/com/attunity/main
)
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.attunity.jdbc">
<resources>
<resource-root path="nvjdbc-2.0.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
尝试
- 跟随一堆 stackoverflow 问题(1、2、3、4)并尝试了许多配置和驱动程序位置排列。
- 根据在上述问题和其他论坛中找到的信息,编辑了上述所有列出的和独立的配置文件。
- 阅读JBoss 指南中的 JDBC 部分,但这些部分需要访问管理控制台,这是我无法做到的。
环境信息
- 视窗 7 64 位
- JBoss 6.xx EAP
- Java 1.8 64 位
- Attunity 驱动程序 2.0
更新
我可以确认,纯 JDBC 连接尝试被拒绝。驱动程序已正确加载。
代码
private Connection createAttunityConnection() {
Connection connect = null;
try {
Class.forName(ATTUNITY_DATABASE_DRIVER);
String url = ATTUNITY_URL + ATTUNITYE_IP_ADDRESS + ":"
+ ATTUNITY_PORT + ":" + ATTUNITY_ENCRYPTION_PROTOCOL + ";"
+ ATTUNITY_ENCRYPTION_KEY;
connect = DriverManager.getConnection(url, ATTUNITY_USERNAME,
ATTUNITY_PASSWORD);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return connect;
}
输出
28.07.2016 10:37:37 ERROR AttunityConnector:56 - Method createAttunityConnection() - SQLException : java.sql.SQLException: Connection refused
这是否会导致上述问题部分中的错误消息?