Pergunta

Estou tentando implantar um aplicativo de guerra Jboss 7 existente no Cloudbees Paas e estou ficando preso na configuração da fonte de dados.Seguindo este dedicado Entrada da wiki Cloudbees e a tópico relacionado, acabo com o seguinte erro (já mencionado por outras pessoas no tópico) durante a inicialização do aplicativo:

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

Meus arquivos de configuração são os seguintes:

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>
(...)

persistência.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>

Obrigado desde já por qualquer ajuda

Ambiente:Jboss 7, JPA 2.0

Foi útil?

Solução

Graças à resposta de Nicolas e a mais pesquisas no Google, consegui fazê-lo funcionar.Pelo que entendi, você não pode usar o driver cloudbees com.cloudbees.jdbc.Driver de dentro de um aplicativo Jboss (e especificamente no nosso caso no servidor Cloudbees Java EE 6) e tem que usar o mysql com.mysql.jdbc.Driver.
Como Nicolas afirmou o jdbc:cloudbees://[databaseName] url do banco de dados usa por convenção o driver cloudbees.Você precisa usar o URL que faz referência ao banco de dados real (você pode encontrá-lo na página de configuração do banco de dados cloudbees) na forma de:

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

o ponto importante aqui é o jdbc:mysql://...

Altere a URL do banco de dados em cloudbees-web.xml usando o formulário acima e funciona!

Talvez o pessoal do cloudbees pudesse deixar a documentação um pouco mais clara sobre esse ponto específico

Outras dicas

Para usar jdbc:cloudbees:* URL JDBC você precisa usar com.cloudbees.jdbc.Driver como nome da classe do driver.

por convenção, cada driver jdbc registrado em uma JVM usa um prefixo antes de suas próprias informações de URL específicas, de modo que uma URL jdbc seja "jdbc::"

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top