8

standalone.xml で MySQL DataSource を構成でき、正常に動作しています。@DataSourceDefinitionしかし、アノテーションを使用して DataSource を構成したいと考えています。

JBoss AS7 で @DataSourceDefinition を使用して MySQL データソースを設定する方法は?

私がすでに試したことは次のとおりです。

@DataSourceDefinition(
        className = "com.mysql.jdbc.Driver",
        name = "java:global/jdbc/MyDS",
        serverName="localhost",
        portNumber=3306,
        user = "root",
        password = "admin",
        databaseName = "test"
)
@Startup
public class DBConfig {
}

このpersistence.xmlと一緒に:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="javaee6-app" transaction-type="JTA">
        <jta-data-source>java:global/jdbc/MyDS</jta-data-source>
        <properties>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
            <property name="hibernate.show_sql" value="true"/>
        </properties>
    </persistence-unit>
</persistence>

に mysql コネクタの jar ファイルがありますWEB-INF/lib

しかし、アプリケーションをデプロイすると、次のエラーが発生します。

(DeploymentScanner-threads - 2) {"JBAS014653: 複合操作が失敗し、ロールバックされました。失敗した手順:" => {"操作手順-2" => {"JBAS014771: 依存関係が見つからない/利用できないサービス" => [" jboss.persistenceunit.\"javaee6-app.war#javaee6-app\"jboss.naming.context.java.global.jdbc.MyDSMissing[jboss.persistenceunit.\"javaee6-app.war#javaee6-app\"jboss. Naming.context.java.global.jdbc.MyDS]"]}}}

4

3 に答える 3

4

私はそれを自分で理解しました。

JBossAS7スキャンプロセスにはいくつかの欠陥があるようです。Java EE 6仕様に従って、すべてのクラスの@DataSourceDefinition注釈をスキャンする必要があります。ただし、アノテーションのあるクラスに配置すれば問題なく動作します。@Stateless

@DataSourceDefinition(
        className = "com.mysql.jdbc.Driver",
        name = "java:global/jdbc/MyDS",
        serverName="localhost",
        portNumber=3306,
        user = "root",
        password = "admin",
        databaseName = "test"
)
@Stateless
public class DBConfig {
    public void test() { //there should be atleast one method, so this dummy
    }
}
于 2013-02-27T09:11:06.360 に答える
0

1 つの提案は、jboss の standalone.xml または domain.xml でデータ ソース名を 7. として構成し、jboss モジュールで mysql コネクタ jar を構成することです。

Mysql Connector jar を構成する このリンクを参照してください。

http://www.mastertheboss.com/jboss-datasource/how-to-configure-a-datasource-with-jboss-7

Standalone.xml でのデータ ソース構成 このリンクを参照

https://docs.jboss.org/author/display/AS71/DataSource+configuration

于 2013-02-27T05:04:52.753 に答える
0

また、次の問題は次のとおりです。

java.lang.ClassCastException: com.mysql.jdbc.Driver を javax.sql.DataSource にキャストできません

原因のパラメーターclassNameは、ドライバー クラスではなく、実装 (javadoc を参照) を@DataSourceDefinition提供する必要があります。DataSource

MySQL の場合は次のようになります。

className = "com.mysql.jdbc.jdbc2.optional.MysqlDataSource"
className = "com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"
className = "com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"    // XA transaction
于 2016-04-12T23:35:52.787 に答える