4
respostas

Problema com Datasource

Na aula pede para eu colocar

<driver name="mysql" module="com.mysql">
    <datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlDataSource</datasource-class>
</driver>

Como estou seguindo as aulas do modo carreira eu já tenho configurado da seguinte maneira:

 <driver name="mysql" module="com.mysql">
      <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
  </driver>

E só consigo rodar o projeto da segunda forma, se eu coloco para a primeira me dá erro de que não conseguiu achar o mysql.

Qual a diferença entre os dois e porque só funciona da segunda forma?

4 respostas

Rodrigo, a segunda forma é definida quando se trabalha com transações distribuídas.

pode postar o seu arquivo persistence.xml?

Transações distribuídas? Onde eu posso procurar saber sobre? Não tenho ideia do que seja.

Segue o persistence:

<?xml version="1.0" encoding="UTF-8"?>

<persistence version="2.1"
   xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="
        http://xmlns.jcp.org/xml/ns/persistence
        http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
   <persistence-unit name="primary">
       <jta-data-source>java:jboss/datasources/casadocodigo-ejbDS</jta-data-source>
      <properties>
         <property name="hibernate.hbm2ddl.auto" value="update" />
         <property name="hibernate.show_sql" value="true" />
         <property name="hibernate.format_sql" value="true" />
         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
      </properties>
   </persistence-unit>
</persistence>

Old but gold: https://developer.jboss.org/thread/151380?_sscc=t

Não vejo problemas também no seu persistence. Na verdade, eu não entendi porque seu código só roda com a segunda configuração do driver mysql.

Se eu entendi certo o modo xa é para o DS ser usado em varias TX.

Se eu entendi corretamente, poderia ser minha config do projeto de uma aula antiga que estava me obrigando a usar o modo "xa", mas eu tirei o DS do projeto antigo e tirei o "xa" e coloquei o datasource-class normal e o erro continuou.

Minha config do standalone.xml:

   <datasources>
                <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
                    <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
                    <driver>h2</driver>
                    <security>
                        <user-name>sa</user-name>
                        <password>sa</password>
                    </security>
                </datasource>
                <datasource jndi-name="java:/livrariaDS" pool-name="livrariaDS" enabled="true" use-java-context="true">
                    <connection-url>jdbc:mysql://localhost:3306/livraria</connection-url>
                    <driver>mysql</driver>
                    <pool>
                        <min-pool-size>10</min-pool-size>
                        <max-pool-size>100</max-pool-size>
                        <prefill>true</prefill>
                    </pool>
                    <security>
                        <user-name>root</user-name>
                        <password>root</password>
                    </security>
                </datasource>
                <datasource jndi-name="java:jboss/datasources/casadocodigo-ejbDS" pool-name="casadocodigoDS" enabled="true" use-java-context="true">
                    <connection-url>jdbc:mysql://localhost:3306/casadocodigo_javaee</connection-url>
                    <driver>mysql</driver>
                    <pool>
                        <min-pool-size>10</min-pool-size>
                        <max-pool-size>20</max-pool-size>
                        <prefill>true</prefill>
                    </pool>
                    <security>
                        <user-name>root</user-name>
                        <password>root</password>
                    </security>
                </datasource>
                <drivers>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                    <driver name="mysql" module="com.mysql">
                        <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software