ゴール
Attunity Driver を JBoss サーバーに追加して、データソースを作成できるようにします。
以下のエラーは、ドライバーが正しくロードされていないことが原因であると想定しています。ネットワークの問題により、データソースの初期化が失敗する可能性があります。ドライバーが正しくロードされ、JBoss で使用できることを確認したいと考えています。
この質問の最後の更新セクションにあるように、プレーンな JDBC 接続を試みるとConnection refused
エラーが発生します。これにより、次の問題セクションでエラーが発生しますか?
アチュニティとは?- 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"
]}
構成ファイル
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>
試み
- 一連のスタックオーバーフローの質問 ( 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
これにより、上記の問題セクションのエラー メッセージが表示されますか?