Comment configurer une source de données Mysql dans une application Cloudbees Java EE6 ?

StackOverflow https://stackoverflow.com//questions/12693090

  •  12-12-2019
  •  | 
  •  

Question

J'essaie de déployer une application de guerre Jboss 7 existante sur Cloudbees Paas et je suis bloqué avec la configuration de la source de données.Suite à ce dédié Entrée du wiki Cloudbees et le fil connexe, je me retrouve avec l'erreur suivante (déjà évoquée par d'autres dans le fil) lors du démarrage de l'application :

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

Mes fichiers de configuration sont les suivants :

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 (partie pertinente)

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

persistance.xml (partie pertinente)

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

Merci d'avance pour toute aide

Env :Jboss 7, JPA 2.0

Était-ce utile?

La solution

Grâce à la réponse de Nicolas et à quelques recherches supplémentaires sur Google, j'ai réussi à le faire fonctionner.D'après ce que j'ai compris, vous ne pouvez pas utiliser le pilote cloudbees com.cloudbees.jdbc.Driver depuis une application Jboss (et plus particulièrement dans notre cas sur le serveur Cloudbees Java EE 6) et devoir utiliser celle de mysql com.mysql.jdbc.Driver.
Comme Nicolas l'a déclaré, jdbc:cloudbees://[databaseName] L'URL de la base de données utilise par convention le pilote cloudbees.Vous devez utiliser l'url référençant la base de données réelle (vous pouvez la trouver dans la page de configuration de la base de données cloudbees) sous la forme de :

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

le point important ici est le jdbc :mysql://...

Changez l'url de la base de données dans cloudbees-web.xml en utilisant le formulaire ci-dessus et ça marche !

Peut-être que les gens de Cloudbees pourraient rendre la documentation un peu plus claire sur ce point particulier.

Autres conseils

Pour utiliser JDBC: Cloudbees: * URL JDBC Vous devez utiliser com.cloudbees.jdbc.Driver en tant que nom de classe de pilotes.

Par convention, chaque pilote JDBC enregistré sur une JVM utilise un préfixe avant sa propre entreprise d'URL spécifique, de sorte qu'une URL JDBC est "JDBC ::"

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top