Topic
3 replies Latest Post - ‏2010-08-27T15:40:48Z by SystemAdmin
SystemAdmin
SystemAdmin
8 Posts
ACCEPTED ANSWER

Pinned topic Timeout MySQL gera problemas no Hibernate

‏2010-08-27T15:30:24Z |
Há algum tempo estou tentanto colocar uma aplicação de um cliente online mas ainda não obtive sucesso. Pelo menos descobri qual o problema: tenho uma aplicação em Java, que utiliza alguns frameworks como JSF, RichFaces, Hibernate entre outros. O maior problema é que o Hibernate está perdendo a conexão com o MySQL. Isso gera um erro fatal e a aplicação cai.

Só pra atualizar: O timeout do MySQL para conexão inativa é de 15s. O problema é especifico do servidor que estou utilizando. Outros servidores não tem este problema. Já tentei checar pra ver se esta conectado antes de exercurar um comando, até que funciona, mais ficou inviavel para a minha aplicação.

Segue o meu mysql-ds.xml

Código:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>XXXXDS</jndi-name>
<connection-url>jdbc:mysql://187.45.196.132:3306/xxxx?autoReconnect=true</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>xxxx</user-name>
<password>******</password>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
Meu persistence.xml

Código:
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="XXXX">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/XXXXDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />

<property name="hibernate.connection.autoReconnect" value="true" />
<property name="hibernate.connection.autoReconnectForPools" value="true"/>
</properties>
</persistence-unit>
</persistence>

Alguem já passou por isso e tem alguma solução?!
Updated on 2010-08-27T15:40:48Z at 2010-08-27T15:40:48Z by SystemAdmin
  • SystemAdmin
    SystemAdmin
    8 Posts
    ACCEPTED ANSWER

    Re: Timeout MySQL gera problemas no Hibernate

    ‏2010-08-27T15:33:57Z  in response to SystemAdmin
    Olha, estou passando pelo mesmo problema que você disse. Minhas conexões com o MySQL são perdidas. Um hora funciona, logo depois falha.
    Fica difícil de trabalhar assim!
    • PatrickLemos
      PatrickLemos
      4 Posts
      ACCEPTED ANSWER

      Re: Timeout MySQL gera problemas no Hibernate

      ‏2010-08-27T15:36:25Z  in response to SystemAdmin
      Estou com o mesmo problema exatamente no timeout do mysql, mas no meu caso uso o delphi.
      Alguma solução?
      • SystemAdmin
        SystemAdmin
        8 Posts
        ACCEPTED ANSWER

        Re: Timeout MySQL gera problemas no Hibernate

        ‏2010-08-27T15:40:48Z  in response to PatrickLemos
        Pessoal, baixem o c3p0 aqui: http://sourceforge.net/projects/c3p0/files/ e adicione as lib do c3p0 na pasta lib do jboss.

        Depois é só criar um arquivo nomeadesejar-service.xml configure as linhas abaixo de acordo com sua necessidade e adicione o arquivo

        <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE server>
        <server>
        <mbean code="com.mchange.v2.c3p0.jboss.C3P0PooledDataSour ce"
        name="jboss:service=C3P0PooledDataSource">
        <attribute name="JndiName">java:jdbc/nomeadesejar</attribute>
        <attribute name="JdbcUrl">jdbc:mysql://187.45.196.173:3306/meudog7?autoReconnect=true</attribute>
        <attribute name="DriverClass">com.mysql.jdbc.Driver</attribute>
        <attribute name="User">user</attribute>
        <attribute name="Password">password</attribute>
        <attribute name="MaxIdleTime">15</attribute>
        <attribute name="TestConnectionOnCheckin">true</attribute>
        <attribute name="TestConnectionOnCheckout">true</attribute>
        <attribute name="UnreturnedConnectionTimeout">15</attribute>
        <depends>jboss:service=Naming</depends>
        </mbean>
        </server>

        Na configuração do hibernate.cfg.xml configure com as linhas abaixo:

        <hibernate-configuration>

        <session-factory>

        <!-- Database connection settings -->
        <property name="connection.datasource">java:/jdbc/nomeadesejar</property>
        <property name="connection.autoReconnect">true</property>
        <property name="connection.autoReconnectForPools">true</property>

        <!-- SQL dialect -->
        <property name="hibernate.dialect">org.hibernate.dialect.MyS QLDialect</property>
        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        </session-factory>
        </hibernate-configuration>

        Espero ter ajudado! Qualquer coisa é só gritar!!