Perdendo a Conexão no Oracle! (Hibernate)

9 respostas
N

Olá possoal, tudo bem ? ? ? ?

Tô precisando de uma ajudinha de vocês que são mestres em desenvolvimento web com java.

Eu tenho uma aplicação rodando no tomcat e com banco oracle 10g.

Uso o hibernate 3 para persistencia e a implementação gerada pelo plugin hibernate syncronizer (eclipse).


O problema é que após algumas horas de inatividade, o sistema perde a conexão com o banco de dados.

Alguém já passou por isso. Quem poder me ajudar agradeço muito.

Abaixo a exceção:

LOGGER: org.hibernate.util.JDBCExceptionReporter
DATA : 2006-07-11 08:44:20,150
WARN : org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:71)
MSG : SQL Error: 17008, SQLState: null

LOGGER: org.hibernate.util.JDBCExceptionReporter
DATA : 2006-07-11 08:44:20,150
ERROR : org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:72)
MSG : Conexão Fechada

LOGGER: com.opensymphony.webwork.dispatcher.DispatcherUtils
DATA : 2006-07-11 08:44:20,150
ERROR : com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:245)
MSG : Could not execute action

org.hibernate.exception.GenericJDBCException: could not execute query
	at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.loader.Loader.doList(Loader.java:2148)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)
	at org.hibernate.loader.Loader.list(Loader.java:2024)
	at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
	at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)
	at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)
	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)
	at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
	at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:749)
	at tre.sisurna.ww.action.ActionAutenticaUsuario.execute(ActionAutenticaUsuario.java:85)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:365)
	at com.opensymphony.xwork.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:217)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:191)
	at com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:137)
	at com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:81)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:115)
	at com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:81)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.webwork.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:171)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:151)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:100)
	at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:113)
	at com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:233)
	at com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:198)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:595)
Caused by: java.sql.SQLException: Conexão Fechada
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
	at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
	at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:840)
	at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:759)
	at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:442)
	at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:368)
	at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:105)
	at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1561)
	at org.hibernate.loader.Loader.doQuery(Loader.java:661)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
	at org.hibernate.loader.Loader.doList(Loader.java:2145)

9 Respostas

L

Se vc estiver usando pool de conexão do hibernate verifique a configuração.

Se estiver usando pool do servidor, verifique como configurar o teste de time out, ou então tire o time out da conexão do oracle.

flw

N

Olá Júnior,

Pô, obrigadão por me ajudar. Acho que essas informações são valiosas.

Vou ver se encontro algum tutorial no google mostrando como fazer essas configurações.

Valeu mesmo.

N

Oi júnior, posso te perguntar mais uma coisa ?

Qual pool tu acha melhor, o do tomcat ou o do hibernate?

É que eu nunca configurei isso. Deve tá o default.

No meu hibernate.cfg tmb não tem nenhuma configuração de pool.

Então acho que o pool do tomcat deve tá sendo usado por default.

L

Quanto ao pool isso é relativo, eu gosto de usar no hibernate para não depender do pessoal de infra.

Acrescente estas linhas no seu hibernate.cfg.xml:

<!-- Condiguração do c3p0 --> <property name="hibernate.c3p0.max_size">10</property> <property name="hibernate.c3p0.min_size">2</property> <property name="hibernate.c3p0.timeout">5000</property> <property name="hibernate.c3p0.max_statements">10</property> <property name="hibernate.c3p0.idle_test_period">3000</property> <property name="hibernate.c3p0.acquire_increment">2</property>

Obs.: Se for necessário mude os valores e lembre-se de incluir o jar do c3p0 que vem junto com o hibernate no diretorio lib.

flw

N

[b]Mas se eu colocar essas configurações do hibernate.

Automaticamente meu sistema deixará de utilizar o pool do tomcat?

[/b]

Obrigado mais uma vez! :wink:

L

Se vc não configurou nada no tomcat o seu sistema não está utilizando pool.

N

Ahh Junior, então acho que deve ser esse o problema.

Eu realmente não configurei nada no tomcat.

Pô, então vou testar as configurações de pool do hibernate.

Quando funcionar eu posto a confirmação aqui no forum.

Valeu Junior !

N

Olá Junior, pô cara, obrigadão pela ajuda.

As configurações que tu me passou do c3p0 funcionou.

Meu sistema está rodando desde ontem e ainda não perdeu a conexão com o banco de dados.

Eu coloquei nos libs a última versão do c3p0 que eu baixei no sourceforge.

Valeu mesmo, espero que esse tópico possa ajudar mais pessoas.

E

Amigos, estou com um problema parecido.
Minha aplicação não conecta se o banco tiver caído e voltado. Neste caso preciso reiniciar o tomcat. Penso que possa ter relação com o pool do c3po. Como eu poderia limpar o pool quando encontrasse uma falha de conexão?

Criado 11 de julho de 2006
Ultima resposta 27 de jul. de 2006
Respostas 9
Participantes 3