Trabalho em uma aplicação web que está apresentado um erro de timeout. Há módulos da aplicação que fazem acesso ao banco via DAO (sql embutido no código) e há módulos que fazem acesso ao banco via Hibernate.
A exceção de timeout ocorre em uma classe Hibernate com o seguinte trecho de código:
try {
Session session = HibernateUtil.currentSession();
saida = session.save(entidade);
} catch (HibernateException e) {
log.error("Exception no sistema: ",e);
throw new SystemException(e);
}
Pelo que entendi, após o timeout, ocorre o erro ao chamar o método “save()” o objeto session.
Tentei 2 configurações para aumentar o tempo de timeout que não surtiram efeito:
- Configurei o DataSource do JBoss conforme abaixo:
<!-- sql to call on an existing pooled connection when it is obtained from pool - the OracleValidConnectionChecker is prefered -->
<check-valid-connection-sql>SELECT SYSDATE FROM DUAL</check-valid-connection-sql>
-
Configurei o hibernate.cfg.xml conforme abaixo:
<property name="connection.datasource">java:/jdbc/bancoDS</property> <property name="dialect">org.hibernate.dialect.OracleDialect</property> <property name="show_sql">false</property> <property name="use_outer_join">true</property> <!--<property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property>--> <property name="transaction.factory_class"> org.hibernate.transaction.JTATransactionFactory </property> <!-- Esta propriedade é dependente do AppServer --> <property name="transaction.manager_lookup_class"> org.hibernate.transaction.JBossTransactionManagerLookup </property> <property name="hibernate.cache.provider_class"> org.hibernate.cache.EhCacheProvider </property> <!-- <property name="jta.UserTransaction">java:comp/ClientUserTransaction</property>--> <property name="hibernate.c3p0.timeout">1200</property>
Não sei se o fato da propriedade jtx.UserTransaction estar comentado pode causar problema.
Obs: depois que eu tentei essas configurações o timeout passou a acontecer mais rápido do que antes.
Alguém tem alguma idéia do pode ser?
Obrigado.