适用于JBoss 6 EAP的新JDBC驱动程序

时间:2016-07-27 12:11:54

标签: java jdbc jboss datasource attunity

目标

将Attunity Driver添加到JBoss服务器,以便可以创建数据源。

我认为下面的错误是由于驱动程序没有正确加载。由于网络问题,数据源的初始化可能会下降。我想确保驱动程序正确加载并可供JBoss使用。

如本问题末尾的“更新”部分所示,普通JDBC连接尝试收到Connection refused错误。这是否会导致以下问题部分中的错误?

什么是Attunity? - Attunity是一个商业驱动程序,我们用它来创建与COBOL系统的JDBC连接。我们仅对创建的连接使用纯SQL ,而不是更多。 Attunity不支持hibernate 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"
]}

配置文件

的persistence.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>

MY-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 guide中的JDBC部分,但这些部分需要访问管理控制台,这是我无法做到的。

环境信息

  • Windows 7 64位
  • JBoss 6.x.x EAP
  • Java 1.8 64bit
  • Attunity Driver 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

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

0 个答案:

没有答案