Pregunta

Estoy intentando implementar una aplicación de guerra Jboss 7 existente en Cloudbees Paas y me quedo atascado con la configuración de la fuente de datos.Siguiendo este dedicado Entrada wiki de Cloudbees y el hilo relacionado, termino con el siguiente error (ya mencionado por otros en el hilo) durante el inicio de la aplicación:

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

Mis archivos de configuración son los siguientes:

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 (parte relevante)

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

persistencia.xml (parte relevante)

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

Gracias de antemano por cualquier ayuda

Sobre:Jboss 7, APP 2.0

¿Fue útil?

Solución

Gracias a la respuesta de Nicolas y a buscar más en Google, logré que funcionara.Hasta donde tengo entendido, no puedes usar el controlador de Cloudbees. com.cloudbees.jdbc.Driver desde dentro de una aplicación Jboss (y específicamente en nuestro caso en el servidor Cloudbees Java EE 6) y tenemos que usar mysql com.mysql.jdbc.Driver.
Como afirmó Nicolás jdbc:cloudbees://[databaseName] La URL de la base de datos utiliza por convención el controlador Cloudbees.Debe utilizar la URL que hace referencia a la base de datos real (puede encontrarla en la página de configuración de la base de datos de Cloudbees) en el formato:

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

el punto importante aquí es el jdbc:MySQL://...

Cambie la URL de la base de datos en cloudbees-web.xml usando el formulario de arriba y ¡funcionará!

Quizás la gente de Cloudbees podría aclarar un poco más la documentación sobre este punto en particular.

Otros consejos

Para usar JDBC: Cloudbees: * URL de JDBC debe usar com.cloudbees.jdbc.driver como nombre de la clase de controlador.

Por convención, cada conductor JDBC registrado en un JVM usa un prefijo antes de su propia información de URL específica, para que una URL de JDBC sea "JDBC ::"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top