3

JBoss EAP 6.0 を使用して非常に奇妙な問題に直面しています

問題は基本的に、standalone.xml のデータ ソースを構成したことです。

            <datasource jndi-name="java:jboss/jdbc/ejb/testconn" pool-name="test-cluster-Pool" enabled="true" use-java-context="true">
                <connection-url>jdbc:sqlserver://127.0.0.1:1433;databaseName=testdb;</connection-url>
                <driver>sqlserver-jdbc</driver>
                <pool>
                    <min-pool-size>10</min-pool-size>
                    <max-pool-size>100</max-pool-size>
                    <prefill>true</prefill>
                </pool>
                <security>
                    <user-name>sa</user-name>
                    <password>sa</password>
                </security>
                <statement>
                    <prepared-statement-cache-size>32</prepared-statement-cache-size>
                    <share-prepared-statements>true</share-prepared-statements>
                </statement>
            </datasource>

これはドライバーの構成です。モジュールと同じものをインストールしました。

            <drivers>
                <driver name="h2" module="com.h2database.h2">
                    <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                </driver>
                <driver name="sqlserver-jdbc" module="com.himanshu.jdbc">
                    <datasource-class>com.himanshu.jdbcdriver.datasource.DataSource</datasource-class>
                </driver>
            </drivers>

com.himanshu.jdbcdriver.datasource.DataSource クラスは、基本的に com.microsoft.sqlserver.jdbc.SQLServerDataSource を拡張します。

しかし、テストを実行すると、前述の datasource-class を使用していないと結論付けることができます。なぜなら、2つの方法の場合、

@Override
public Connection getConnection() throws SQLServerException {
    System.out.println("TRYING TO GET CONNECTION");
    return null;
}

@Override
public Connection getConnection(String arg0, String arg1)
        throws SQLServerException {
    System.out.println("TRYING TO GET CONNECTION");
    return null;
}

したがって、理想的には、接続は null を返す必要がありますが、接続が null として返されることも、これらの SOP が印刷されることもないため、実際にどこが間違っているのか理解できません。

module.xml は次のようなものです。

<module xmlns="urn:jboss:module:1.1" name="com.himanshu.jdbc">

<resources>
    <resource-root path="custom-datasource-jar-with-dependencies.jar"/>
</resources>
<dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
    <module name="javax.servlet.api" optional="true"/>
</dependencies>
</module>

アップデート:

JBOSS のバグであることが判明しました: https://issues.jboss.org/browse/JBJCA-1014

4

1 に答える 1

0

Jboss は独自にデータソースをインスタンス化します。使用されるクラスローダーはアプリケーション クラスを認識しません。そのため、ドライバーを構成するときに jboss モジュール ディレクトリにドライバー実装を提供する必要があります。
そのため、クラスは jboss に表示されず、データソースをロードするときに使用できません。jbossモジュールディレクトリにある特定のjarに追加しない限り

http://magnus-k-karlsson.blogspot.fr/2012/08/how-to-install-mysql-datasource-on.htmlを参照してください。jboss のモジュールからデータソースを設定します。ネーミングが気になる。

于 2013-03-19T08:46:51.057 に答える