TomCat + Hibernate = 1 problema

Amigos estou tendo um problema quando utilizo o hibernate com o tomcat!
Tenho um webservice que utiliza hibernate para acessar o banco de dados. Alguem teria alguma coisa de como trabalhar o hibernate e o Toncat juntos?

Ficaria muito grato

Para ser mais especifico… o erro do log do tomcat…

javax.servlet.ServletException: Servlet execution threw an exception
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
----- Root Cause -----
java.lang.ExceptionInInitializerError
at meuservico.HibernateUtil.(HibernateUtil.java:39)
at meuservico.AmigoDAO.(AmigoDAO.java:21)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
at java.lang.Class.newInstance0(Class.java:308)
at java.lang.Class.newInstance(Class.java:261)
at org.apache.axis.providers.java.JavaProvider.makeNewServiceObject(JavaProvider.java:381)
at org.apache.axis.providers.java.JavaProvider.getNewServiceObject(JavaProvider.java:233)
at org.apache.axis.providers.java.JavaProvider.getServiceObject(JavaProvider.java:89)
at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:285)
at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:697)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:828)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:700)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:584)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.lang.NoClassDefFoundError: org/aspectj/lang/Signature
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:141)
at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:57)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:80)
at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:362)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:60)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1463)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1004)
at meuservico.HibernateUtil.(HibernateUtil.java:31)
… 49 more

Você tem que colocar o aspectjrt.jar no seu classpath.

Obrigado amigo… deu certo com sua dica…

Agora tenho mais um problema… minha aplicacao cliente… consegue acessar a aplicacao web service… mas apenas a primeira vez que ele conseguiu logar na sessao… depois se ele sair do programa e tentar acessar novamente da pau na aplicação … e pior não tem erro para te mostrar…

valeus

[quote=betobcsc]Obrigado amigo… deu certo com sua dica…

Agora tenho mais um problema… minha aplicacao cliente… consegue acessar a aplicacao web service… mas apenas a primeira vez que ele conseguiu logar na sessao… depois se ele sair do programa e tentar acessar novamente da pau na aplicação … e pior não tem erro para te mostrar…

valeus[/quote]

Rapaz, sem erro, só macuba… :shock:

Será que num tem, em algum lugar, uma exceção que tá sendo silenciada dentro de um try-catch não?

Class ERemotableException with message orgl.hibernate.HibernateException: Not able obtain connection

essa eh a mensagem que da…

Fora desse webservice o Hibernate funciona normal?

Funciona corretamente fora do webservice…
Tipo assim a primeira vez que o web service eh acessado funciona corretamente… quando fecho a aplicacao cliente… e abro ela novamente e acesso o mesmo web service da esse erro… mas se eu baixar o tomcat e levantar novamente o tomcat funciona normal… mas apenas 1 vez…

Muito estranho nao?

Vc sabe me dizer o que é esse tal de JNDI/JDBC?
Vou lhe passar o log do tomcat…

java.lang.IllegalStateException: getAttribute: Session already invalidated
at org.apache.catalina.session.StandardSession.getAttribute(StandardSession.java:953)
at org.apache.catalina.session.StandardSessionFacade.getAttribute(StandardSessionFacade.java:171)
at org.apache.axis.transport.http.AxisHTTPSessionListener.destroySession(AxisHTTPSessionListener.java:43)
at org.apache.axis.transport.http.AxisHTTPSessionListener.sessionDestroyed(AxisHTTPSessionListener.java:72)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:658)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:607)
at org.apache.catalina.session.StandardManager.processExpires(StandardManager.java:793)
at org.apache.catalina.session.StandardManager.run(StandardManager.java:870)
at java.lang.Thread.run(Thread.java:534)

2005-06-13 15:23:10 StandardManager[/axis] Session event listener threw exception
java.lang.IllegalStateException: getAttribute: Session already invalidated
at org.apache.catalina.session.StandardSession.getAttribute(StandardSession.java:953)
at org.apache.catalina.session.StandardSessionFacade.getAttribute(StandardSessionFacade.java:171)
at org.apache.axis.transport.http.AxisHTTPSessionListener.destroySession(AxisHTTPSessionListener.java:43)
at org.apache.axis.transport.http.AxisHTTPSessionListener.sessionDestroyed(AxisHTTPSessionListener.java:72)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:658)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:607)
at org.apache.catalina.session.StandardManager.processExpires(StandardManager.java:793)
at org.apache.catalina.session.StandardManager.run(StandardManager.java:870)
at java.lang.Thread.run(Thread.java:534)

2005-06-13 15:23:10 StandardManager[/axis] Session event listener threw exception
java.lang.IllegalStateException: getAttribute: Session already invalidated
at org.apache.catalina.session.StandardSession.getAttribute(StandardSession.java:953)
at org.apache.catalina.session.StandardSessionFacade.getAttribute(StandardSessionFacade.java:171)
at org.apache.axis.transport.http.AxisHTTPSessionListener.destroySession(AxisHTTPSessionListener.java:43)
at org.apache.axis.transport.http.AxisHTTPSessionListener.sessionDestroyed(AxisHTTPSessionListener.java:72)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:658)
at org.apache.catalina.session.StandardSession.expire(StandardSession.java:607)
at org.apache.catalina.session.StandardManager.processExpires(StandardManager.java:793)
at org.apache.catalina.session.StandardManager.run(StandardManager.java:870)
at java.lang.Thread.run(Thread.java:534)

Pelo que ele está dizendo, a sua aplicação está tentando usar uma sessão que já foi invalidada (chamaram invalidate() ). Será que esse webservice está com as sessões funcionando corretamente?

Acho q tem algum problema com essa coisa de sessao… pois as vezes da esse outro erro: Exception sesssion is closed.

O que poderia estar acontecendo?

Vc acha q OJB seria melhor q o hibernate… estou perguntando pq vc ja deve ter percebido que muitos erros ocorrem…

A sessão que está fechada não é a do Hibernate, é a da sua aplicação web. Se você prestar atenção, não existe nenhuma classe do Hibernate no seu stack trace.

E até hoje, eu nunca vi ninguém com uma dúvida que fosse problema do Hibernate, é sempre problema de quem está usando. Nenhum dos problemas de você passou, foram problemas do Hibernate.

Entendi… quer dizer que o problema esta no meu Tomcat?
Pq tenho apenas classes do hibernate que me retornam um Array de objetos de uma classe bem simples.

O que vc acha pode ser isso?

Não exatamente no Tomcat, eu to achando que o problema é nesse seu webservice aí, deve ter alguma coisa nele ou em quem está recebendo que não está mantendo a sessão.

Mas como eu não trabalho com webservices, não tenho como saber como resolver isso.

Tem alguém aí com uma idéia :?:

Obrigado Mauricio

Poise agora num sei mais… o problema eh meio urgente… se alguem
poder ajudar…

valeus