Bom dia pessoal estou começando a usar Hibernate 3 e estou recebendo está mensagem:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: could not initialize proxy - the owning Session was closed
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:516)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:423)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:53)
org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:80)
org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:134)
br.com.fts.bean.Empresa$$EnhancerByCGLIB$$e977926a.getRazaoSocial(<generated>)
br.com.fts.action.EmpresaAction.edita(EmpresaAction.java:38)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:276)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:196)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
Apache Tomcat/5.0.28
Pelo que eu entendi ele está reclamando do meu getRazaoSocial() já olhei tudo e não encontrei nada de anormal… isso é alguma configuração ?
Este erro acontece quando vc tenta dar um get em um atributo que está lazy=“true” no hbm e a sessao do hibernate já está fechada. Existem várias formas de contornar isso, fala mais da sua arquitetura pra ter como dar uma dica pra vc…
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:57)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:150)
at whereis.model.Usuario$$EnhancerByCGLIB$$b4c5fb31.getId(<generated>)
at whereis.logic.LocalizadorLogic.main(LocalizadorLogic.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.vraptor.component.DefaultLogicMethod.execute(DefaultLogicMethod.java:117)
at org.vraptor.interceptor.ExecuteLogicInterceptor.intercept(ExecuteLogicInterceptor.java:37)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
at org.vraptor.interceptor.SettingAndValidationInterceptor.intercept(SettingAndValidationInterceptor.java:131)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
at org.vraptor.interceptor.InjectionInterceptor.intercept(InjectionInterceptor.java:41)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
at org.vraptor.interceptor.ComponentLookupInterceptor.intercept(ComponentLookupInterceptor.java:58)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
at whereis.logic.interceptor.DAOInterceptor.intercept(DAOInterceptor.java:25)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
at whereis.logic.interceptor.AutorizadorInterceptor.intercept(AutorizadorInterceptor.java:27)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
at org.vraptor.interceptor.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:22)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
at org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:38)
at org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
at org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:90)
at org.vraptor.core.DefaultController.execute(DefaultController.java:42)
at org.vraptor.VRaptorServlet.service(VRaptorServlet.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
to usando o vRaptor e hibernate. Sempre faço uma solicitação para um logic. Tenho somente uma página, que tem um corpo onde faz várias requisições AJAX. Na primeira requisição AJAX, depois de abrir a página inicial, ocorre tudo sem problemas, ja na segunda, ocorre a excessão. Todas as páginas requisitadas utilizam o acesso ao banco. Passam por um interceptor q cria uma sessão e no final a fecha. Qual pode ser o problema? E porque com o get não ocorre?
É melhor usar o get do que o load ou o contrário? Ou tanto faz em questão de desempenho?
Quanto ao seu problema, com o get ele retorna o objeto na hora que você chama o get. Com o load, ele retorna uma proxy, e como não tem sessão o hibernate não consegue inicializar o Objeto e logo lança a excessão.
Olhando por cima parece estar tudo certo(mas ta tarde já, então não tenho 100% de certeza)… tem certeza que não tem algo fechando a conexão antes de usares o objeto carregado com o proxy?
Tenta chamar session.isOpen() pra ver se a sessão ainda está aberta quando fores utilizar o objeto carregado pelo .load
Também tem o Hibernate.initializate(Object obj) pra forçar a inicialização da proxy.
ninguem eh de ferro… também to com sono aqui hahaha