Tenho um servidor Tomcat
rodando em uma máquina, nesse servidor tenho vários sistemas. O ultimo sistema que desenvolvi, que é uma API REST
com Vraptor+Hibernate
está apresentando alguns problemas.
Depois de algumas horas ocioso as operações de PUT
, Delete
e POST
começam a dar erro, porém funcionam. A página não atualiza e eu tenho o erro 500
. Vi em alguns lugares que o tempo padrão de uma conexão ociosa no Mysql é de 8 horas, e que eu tinha que configurar o pool de conexões do Hibernate, mesmo fazendo isso o erro ainda continua.
Entrei no Log do Tomcat
e achei esses erros:
Caused by: org.hibernate.TransactionException: commit failed
Caused by: org.hibernate.TransactionException: unable to commit against JDBC connection
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
Caused by: java.net.SocketException: Software caused connection abort: socket write error
Essa é minha config do Hibernate:
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/unionbd?autoReconnect=true</property>
<property name="connection.username">root</property>
<property name="connection.password"></property>
<property name="connection.autoReconnect">true</property>
<property name="connection.autoReconnectForPools">true</property>
<property name="initialSize">5</property>
<property name="maxActive">30</property>
<property name="removeAbandoned">false</property>
<property name="testOnBorrow">true</property>
<property name="testOnReturn">true</property>
<property name="validationQuery">1</property>
<!-- C3P0 -->
<property name="c3p0.acquire_increment">5</property>
<property name="c3p0.timeout">0</property>
<property name="c3p0.min_size">3</property>
<property name="c3p0.max_size">100</property>
<property name="c3p0.max_statements">0</property>
<property name="c3p0.idle_test_period">3000</property>
<property name="c3p0.testConnectionOnCheckout">true</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
Alguém pode ajudar?