1

Cloudbees Paas に既存の Jboss 7 war アプリケーションをデプロイしようとしていますが、データソースの構成に行き詰まっています。この専用のCloudbees wiki エントリ関連するスレッドに続いて、アプリケーションの起動中に次のエラーが発生します (スレッド内の他のユーザーによって既に言及されています)。

javax.resource.ResourceException: Wrong driver class [class com.mysql.jdbc.Driver] for this connection URL [jdbc:cloudbees://cbdebate--1]

私の構成ファイルは次のとおりです。

cloudbees-web.xml

<?xml version="1.0" encoding="UTF-8"?>
<cloudbees-web-app xmlns="http://www.cloudbees.com/xml/webapp/1">
 <!-- Application ID (formatted CB_ACCOUNT/APPNAME) -->
 <appid>hck/debate</appid>

 <!-- DataSources (use names refererenced via <resource-ref> in WEB-INF/web.xml) -->
    <resource name="jdbc/debate" auth="Container" type="javax.sql.DataSource">
        <param name="username" value="myuser" />
        <param name="password" value="mypassword" />
        <param name="url" value="jdbc:cloudbees://cbdebate--1" />

        <!-- Connection Pool settings -->
        <param name="maxActive" value="20" />
        <param name="maxIdle" value="2" />
        <param name="maxWait" value="10000" />
        <param name="validationQuery" value="SELECT 1" />
    </resource>
</cloudbees-web-app>

web.xml (関連部分)

(...)
<resource-ref>
    <res-ref-name>jdbc/debate</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
(...)

persistence.xml (関連部分)

        <persistence-unit name="debate" transaction-type="JTA">
            <provider>org.hibernate.ejb.HibernatePersistence</provider>
            <jta-data-source>java:/jdbc/debate</jta-data-source>

(... entity classes declaration ...)

        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
            <property name="hibernate.max_fetch_depth" value="5"/>
            <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
            <property name="org.hibernate.worker.batch_size" value="1000" />
        </properties>
        </persistence-unit>

事前に助けてくれてありがとう

環境: Jboss 7、JPA 2.0

4

2 に答える 2

5

Nicolas の回答とさらにいくつかのグーグルのおかげで、私はなんとかそれを機能させることができました。私が理解している限りcom.cloudbees.jdbc.Driverでは、Jboss アプリケーション内 (特に Cloudbees Java EE 6 サーバーの場合) から cloudbees ドライバーを使用することはできず、mysql one を使用する必要がありますcom.mysql.jdbc.Driver
Nicolas が述べたように、jdbc:cloudbees://[databaseName]データベースの URL は慣例により cloudbees ドライバーを使用します。次の形式で、実際のデータベースを参照する URL を使用する必要があります (cloudbees データベース構成ページで見つけることができます)。

jdbc:mysql://ec2-AAA-BBB-CCC-DDD.compute-1.amazonaws.com:3306/[databaseName]

ここで重要な点は jdbc です: mysql ://...

上記のフォームを使用して、cloudbees-web.xml のデータベースの URL を変更すると、機能します。

おそらく、cloudbees の人々は、この特定の点についてドキュメントをもう少し明確にすることができます

于 2012-10-03T21:30:58.143 に答える
0

jdbc:cloudbees:* JDBC URL を使用するには、ドライバー クラス名として com.cloudbees.jdbc.Driver を使用する必要があります。

慣例により、JVM に登録された各 jdbc ドライバーは、固有の URL 情報の前にプレフィックスを使用するため、jdbc URL は「jdbc::」になります。

于 2012-10-03T14:18:05.267 に答える