1

目标

将 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 问题(1234)并尝试了许多配置和驱动程序位置排列。
  • 根据在上述问题和其他论坛中找到的信息,编辑了上述所有列出的和独立的配置文件。
  • 阅读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

这是否会导致上述问题部分中的错误消息?

4

0 回答 0