Eu gosto de escovar bits... :P hehehehehehe
2008/11/4 Rafael Nami <[EMAIL PROTECTED]> > Esta opção que o Fábio falou é interessante. Já utilizei com GWT (aka > Presentation Model) e funcionou perfeitamente. É melhor porque pode-se > simplificar os objetos para passar para a view, o que faz o cara nunca ter > LazyInicializationException, porque o presentationModel sempre será criado > dentro de um contexto persistente (ou seja, antes do blazeDS converter o > java para .as). > Me desculpem a sinceridade, mas OpenSessionInView é um "workaround" para > isso (LazyInitializationException) não acontecer em aplicações web. Lembro > até que quando apareceu esse pattern (acho que foi no começo do Hibernate 2) > os próprios caras do Hibernate desencorajavam este approach. Só que depois > eles voltaram atrás, porque era uma boa na adoção do produto deles. :) > > Esta de modificar o BlazeDS também é interessante, porém intrusivo paca :) > É para os escovadores de bits de plantão (brincadeira galera, tem que manjar > e ser macho paca pra fazer isso) :) > > Aquele abraço > > Rafael Mauricio Nami > > 2008/11/4 George Queiroz <[EMAIL PROTECTED]> > >> A mudança foi aqui, acho eu: >> >> >> flex.messaging.io.amf.Amf3Output.writePropertyProxy >> >> depois re-gerei o jar e pumba, funcionou. >> >> coloquei um try catch pra o erro do Lazy e mando null no atributo na >> classe flez :) >> >> >> 2008/11/4 LeonardoW <[EMAIL PROTECTED]> >> >>> >>> ERROR [LazyInitializationException] could not initialize proxy - the >>> owning Session was closed >>> org.hibernate.LazyInitializationException: could not initialize proxy >>> - the owning Session was closed >>> at >>> >>> org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java: >>> 56) >>> at >>> >>> org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java: >>> 98) >>> at >>> >>> org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java: >>> 158) >>> at br.com.cpr.flex.Usuario$$EnhancerByCGLIB$ >>> $1c43bd33_3.getNuContatelefone(<generated>) >>> at sun.reflect.GeneratedMethodAccessor360.invoke(Unknown Source) >>> at >>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: >>> 25) >>> at java.lang.reflect.Method.invoke(Method.java:597) >>> at >>> flex.messaging.io.BeanProxy$BeanProperty.get(BeanProxy.java:738) >>> at flex.messaging.io.BeanProxy.getBeanValue(BeanProxy.java:199) >>> at flex.messaging.io.BeanProxy.getValue(BeanProxy.java:176) >>> at >>> flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java: >>> 565) >>> at >>> flex.messaging.io.amf.Amf3Output.writeCustomObject(Amf3Output.java: >>> 518) >>> at >>> flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:193) >>> at >>> flex.messaging.io.amf.Java15Amf3Output.writeObject(Java15Amf3Output.java: >>> 26) >>> at >>> flex.messaging.io.amf.Amf3Output.writeObjectProperty(Amf3Output.java: >>> 243) >>> at >>> flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java: >>> 566) >>> at >>> flex.messaging.io.amf.Amf3Output.writeCustomObject(Amf3Output.java: >>> 518) >>> at >>> flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:193) >>> at >>> flex.messaging.io.amf.Java15Amf3Output.writeObject(Java15Amf3Output.java: >>> 26) >>> at >>> flex.messaging.io.amf.Amf3Output.writeObjectArray(Amf3Output.java: >>> 817) >>> at flex.messaging.io.amf.Amf3Output.writeAMFArray(Amf3Output.java: >>> 431) >>> at >>> flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:179) >>> at >>> flex.messaging.io.amf.Java15Amf3Output.writeObject(Java15Amf3Output.java: >>> 26) >>> at >>> flex.messaging.io.ArrayCollection.writeExternal(ArrayCollection.java: >>> 97) >>> at >>> flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java: >>> 556) >>> at >>> flex.messaging.io.amf.Amf3Output.writeArrayCollection(Amf3Output.java: >>> 462) >>> at >>> flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:175) >>> at >>> flex.messaging.io.amf.Java15Amf3Output.writeObject(Java15Amf3Output.java: >>> 26) >>> at >>> >>> flex.messaging.messages.AbstractMessage.writeExternal(AbstractMessage.java: >>> 352) >>> at >>> flex.messaging.messages.AsyncMessage.writeExternal(AsyncMessage.java: >>> 140) >>> at >>> >>> flex.messaging.messages.AcknowledgeMessage.writeExternal(AcknowledgeMessage.java: >>> 92) >>> at >>> >>> flex.messaging.messages.AcknowledgeMessageExt.writeExternal(AcknowledgeMessageExt.java: >>> 55) >>> at >>> flex.messaging.io.amf.Amf3Output.writePropertyProxy(Amf3Output.java: >>> 556) >>> at >>> flex.messaging.io.amf.Amf3Output.writeCustomObject(Amf3Output.java: >>> 518) >>> at >>> flex.messaging.io.amf.Amf3Output.writeObject(Amf3Output.java:193) >>> at >>> flex.messaging.io.amf.Java15Amf3Output.writeObject(Java15Amf3Output.java: >>> 26) >>> at >>> flex.messaging.io.amf.Amf0Output.writeObject(Amf0Output.java:193) >>> at >>> flex.messaging.io.amf.Java15Amf0Output.writeObject(Java15Amf0Output.java: >>> 41) >>> at >>> >>> flex.messaging.io.amf.AmfMessageSerializer.writeObject(AmfMessageSerializer.java: >>> 196) >>> at >>> >>> flex.messaging.io.amf.AmfMessageSerializer.writeBody(AmfMessageSerializer.java: >>> 186) >>> at >>> >>> flex.messaging.io.amf.AmfMessageSerializer.writeMessage(AmfMessageSerializer.java: >>> 142) >>> at >>> >>> flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java: >>> 179) >>> at >>> flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java: >>> 274) >>> at >>> flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java: >>> 377) >>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:810) >>> at >>> >>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: >>> 252) >>> at >>> >>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: >>> 173) >>> at >>> >>> net.digitalprimates.persistence.hibernate.utils.filters.HibernateSessionServletFilter.doFilter(HibernateSessionServletFilter.java: >>> 62) >>> at >>> >>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: >>> 202) >>> at >>> >>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: >>> 173) >>> at >>> >>> org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java: >>> 96) >>> 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.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java: >>> 175) >>> at >>> >>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java: >>> 524) >>> at >>> flex.messaging.security.TomcatValve.invoke(TomcatValve.java:143) >>> at >>> >>> org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java: >>> 74) >>> at >>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java: >>> 126) >>> at >>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java: >>> 105) >>> at >>> >>> org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java: >>> 156) >>> 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.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java: >>> 112) >>> at java.lang.Thread.run(Thread.java:619) >>> >>> On 4 nov, 14:02, "George Queiroz" <[EMAIL PROTECTED]> wrote: >>> > Leo, eu sai da empresa, e os caras num encontraram o fonte >>> modificado... >>> > >>> > manda o stack q vai q lembro, te aviso. >>> > >>> > 2008/11/4 Léo <[EMAIL PROTECTED]> >>> > >>> > > Blz!!! E a solução feita no blazeDS, podes me passar para dar uma >>> olhada?Muito >>> > > obrigado pelas idéias >>> > > Vlw >>> > >>> > > 2008/11/4 George Queiroz <[EMAIL PROTECTED]> >>> > >>> > > Leo em resumo ou vc liga o opensessioninview no web.xml pra os lazy >>> serem >>> > >> carregados ou num tem solução, pois o blazeds pega todos os >>> atributos da >>> > >> entidade pai e manda um get... se vc ligar o OSIV ai ele vai >>> carregar tudo e >>> > >> num é a idéia. >>> > >>> > >> 2008/11/4 Léo <[EMAIL PROTECTED]> >>> > >>> > >>> Olá pessoal, estou bem informado sobre lazy loading... sei pq >>> acontence >>> > >>> etc...de qualquer forma agradeço a todos pelas respostas. >>> > >>> Essa alternativa de alterar o source do BlazeDS não me parece >>> ideal, pois >>> > >>> sempre que atualizar o blazeDS terei que lembrar de alterar >>> novamente e >>> > >>> gerar o respectivo jar. certo? >>> > >>> Mas posta ai essa solução, fiquei interessado. >>> > >>> Vlw >>> > >>> > >>> 2008/11/4 Mário Júnior <[EMAIL PROTECTED]> >>> > >>> > >>>> Dá pra alterar no source do blazeDS para nao lançar >>> > >>>> LazyInitializationException, e setar o atributo da coleção para >>> null. >>> > >>>> O George já fez isso aqui, eu até vi no source onde faz... assim q >>> eu >>> > >>>> tiver um tepinho te passo.. mas será bem intrusivo alterar o >>> source do >>> > >>>> blazeds. >>> > >>> > >>>> George.. aparece aí rapaz... >>> > >>> > >>>> 2008/11/4 Léo <[EMAIL PROTECTED]> >>> > >>> > >>>> Sim, eu sei...mas sempre que retorno os dados do java para o flex >>> ele >>> > >>>>> tenta carregar os proxys, ai a sessão está fechada e ocorre o >>> erro. Deveria >>> > >>>>> pelo menos ter a opção de escolher se você quer que carregue ou >>> não. >>> > >>>>> No caso ou eu seto para null os proxys ou deixo o erro >>> acontecer... >>> > >>> > >>>>> 2008/11/4 Rafael Nami <[EMAIL PROTECTED]> >>> > >>> > >>>>> Não é essa a questão Leo. O problema existe - Lazy initialization >>> é o >>> > >>>>>> um problema de implementação. Provavelmente esteja chamando um >>> proxy em um >>> > >>>>>> local aonde não possua mais contexto persistente. Dá uma caçada >>> às bruxas ae >>> > >>>>>> mano. >>> > >>>>>> Abraços >>> > >>> > >>>>>> Rafael Mauricio Nami >>> > >>> > >>>>>> 2008/11/4 LeonardoW <[EMAIL PROTECTED]> >>> > >>> > >>>>>>> Bom acho que vou abandonar esse fw.... >>> > >>>>>>> Porque justamente não quero carregar todos os mapeamentos, o >>> que >>> > >>>>>>> onera >>> > >>>>>>> as consultas na base... >>> > >>>>>>> E se fosse para carregar tudo, eu poderia fazer direto pelas >>> > >>>>>>> configurações do hibernate! >>> > >>>>>>> Me corrija se eu estiver errado...Melhor deixar do jeito que >>> está... >>> > >>>>>>> Tem como não lançar a exceção de lazy loading? >>> > >>>>>>> Vlw >>> > >>> > >>>>>>> On 3 nov, 19:37, "Rafael Nami" <[EMAIL PROTECTED]> wrote: >>> > >>>>>>> > Fala Leo, beleza?Seguinte mano, eu já testei essa biblioteca, >>> e já >>> > >>>>>>> olhei o >>> > >>>>>>> > código fonte, faz uns treco bizarro (tipo, colocar chamadas a >>> > >>>>>>> remoteObject >>> > >>>>>>> > para chamar um "contexto persistente extendido" aonde tem >>> > >>>>>>> HibernateProxy). >>> > >>>>>>> > Ou seja, ele propaga o contexto de persistência para o >>> servlet >>> > >>>>>>> filter que o >>> > >>>>>>> > dpHibernate configura (lembra da tabajarisse do >>> > >>>>>>> OpenSessionInViewFilter?). >>> > >>>>>>> > Alem do mais, até aonde vi, é necessário fazer tanto seus >>> beans >>> > >>>>>>> java quanto >>> > >>>>>>> > os .as extenderem classes do framework, o que é muito >>> invasivo, no >>> > >>>>>>> que diz >>> > >>>>>>> > respeito à estruturas legadas Java (o que pode ser seu caso >>> :) ). >>> > >>>>>>> > A melhor solução é a que sempre falo - use o hibernate com >>> > >>>>>>> moderação :) >>> > >>>>>>> > Use e abuse de Projections e HQL construindo objetos e/ou >>> Maps, que >>> > >>>>>>> ae você >>> > >>>>>>> > que "controla" o select que será executado no banco. E >>> recupere >>> > >>>>>>> para a >>> > >>>>>>> > camada de visão algo que tenha significado apenas para a >>> camada de >>> > >>>>>>> > apresentação (aka - PresentationModels). Expor na camada view >>> > >>>>>>> coisas de >>> > >>>>>>> > Hibernate, além de ser um problema de design, é algo que pode >>> > >>>>>>> trazer >>> > >>>>>>> > problemas de performance. >>> > >>> > >>>>>>> > Aquele abraço >>> > >>> > >>>>>>> > Rafael Nami >>> > >>> > >>>>>>> > 2008/11/3 LeonardoW <[EMAIL PROTECTED]> >>> > >>> > >>>>>>> > > Olá pessoal, >>> > >>>>>>> > > estou começando a usar o dpHibernate para solucionar o >>> problema >>> > >>>>>>> de >>> > >>>>>>> > > lazy load e gostaria de saber se tem como fazer ele >>> funcionar com >>> > >>>>>>> o >>> > >>>>>>> > > hibernate.properties ao invez do hibernate.cfg.xml? >>> > >>>>>>> > > Outra questão, meus objetos .as e .java tem que >>> obrigatoriamente >>> > >>>>>>> > > extender as classes hibernatebean e hiberanteProxy? Pois a >>> > >>>>>>> princípio >>> > >>>>>>> > > apenas configurei o web.xml e o remote-config.xml + as >>> > >>>>>>> bibliotecas >>> > >>>>>>> > > necessárias e ele parou de gerar erro de lazy.... Só não >>> afirmo >>> > >>>>>>> isso >>> > >>>>>>> > > com 100% de certeza, pois ainda não está funfando 100%. >>> > >>>>>>> > > Vou fazer alguns testes aqui... >>> > >>>>>>> > > []´s >>> > >>> > >>>> -- >>> > >>>> Mário de Souza Júnior >>> > >>>> Programador Java / Adobe Flex >>> > >>>> (44) 4009-3550 Maringá-PR >>> > >>>>http://blog.mariojunior.com >>> > >>>> [EMAIL PROTECTED] (gtalk, msn, etc..) >>> >>> >> >> >> > > > > -- Mário de Souza Júnior Programador Java / Adobe Flex (44) 4009-3550 Maringá-PR http://blog.mariojunior.com [EMAIL PROTECTED] (gtalk, msn, etc..) --~--~---------~--~----~------------~-------~--~----~ Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para [email protected] Para sair da lista, envie um email em branco para [EMAIL PROTECTED] Mais opções estão disponíveis em http://groups.google.com/group/flexdev -~----------~----~----~----~------~----~------~--~---
