2013-02-26 12 views
8

MySQL DataSourceをstandalone.xmlで設定でき、正常に動作しています。しかし、@DataSourceDefinition注釈を使用してDataSourceを設定したいと思います。JBoss AS7で@DataSourceDefinitionを使用してMySQL DataSourceを設定する

JBoss AS7で@DataSourceDefinitionを使用してMySQLデータソースを設定するにはどうすればよいですか?私はすでに試してみました何

は次のようになります。こののpersistence.xmlとともに

@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 { 
} 

<?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> 

私はWEB-INF/libでのMySQLコネクターのjarファイルを持っています。

しかし、ときに私は、私はこのエラーを取得していたアプリケーションをデプロイします

(DeploymentScanner-threads - 2) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014771: Services with missing/unavailable dependencies" => ["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

このリンクを参照してください、私は自分自身をそれを考え出しました。

JBoss AS7のスキャンプロセスにはいくつかの欠陥があるようです。 Java EE 6仕様では、アノテーションをクラスでスキャンする必要があります。しかし、@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 
    } 
} 
-1

1つの提案を7としてJBossでstandalone.xmlまたはdomain.xmlの中でその構成するデータソース名で、中のMySQLコネクタの瓶を設定jboss module.Andを試してみてください。

Mysql Connector jarの設定このリンクを参照してください。 Standalone.xmlで

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

データソース構成は

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

+0

私はすでに私がstandalone.xmlでデータソースを設定することが可能だと述べました。私は@ DataSourceDefinitionベースの設定を探しています。 –

+0

JbossモジュールでMysql Connector Jarを設定しましたか? –

0

また、あなたが持つことができる次の問題がある:

java.lang.ClassCastException: com.mysql.jdbc.Driver cannot be cast to javax.sql.DataSource

原因のparam @DataSourceDefinitionclassNameDataSource実装(Javadocを参照)、いないドライバクラスを提供する必要があります。

それができるMySQLの

className = "com.mysql.jdbc.jdbc2.optional.MysqlDataSource" 
className = "com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource" 
className = "com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" // XA transaction 
関連する問題