I use XFire 1.2.5 and Hibernate also. I have a few objects that have parent/child relation. I'm using the Criteria API and *alias* to load whatever objects I need. This way I don't receive a lazy initialization exception.
Daniel King, R2D2, C3P0 Application Engineer Web Team Nemours Office: (904) 288-5643 Fax: (904) 288-5758 *** Call me Daniel *** NOTICE...This electronic transmission is intended only for the person(s) named. It may contain information that is (i) proprietary to the sender, and/or (ii) privileged, confidential and/or otherwise exempt from disclosure under applicable State and Federal law, including, but not limited to, privacy standards imposed pursuant to the federal Health Insurance Portability and Accountability Act of 1996 (HIPAA). Receipt by anyone other than the named recipient(s) is not a waiver of any applicable privilege. If you received this confidential communication in error, please notify the sender immediately by reply e-mail message and permanently delete the original message from your system. ________________________________ From: Slawomir Krolik [mailto:[EMAIL PROTECTED] Sent: Thursday, May 17, 2007 3:42 AM To: [email protected] Subject: Re: [xfire-user] Hibernate+Spring+XFire could not initialize proxy - the owning Session was closed OpenSessionInView solved problem, I was searching for other solution but didn't find it Yes I use DTO Objects, but when I try to fill DTO object with data from persisten classes I got lazy exception like in first email... Maybe I'm trying to fill DTO in wrong place? I do this in class that is exposed as Web Service implementation class it looks like this: <Persistent Objects> <DAOS> <CTRL> <Transaction Proxy> <Web Service Class> <- here I'm trying to fill DTO Objects 2007/5/17, Tomek Sztelak <[EMAIL PROTECTED] >: IMHO returning Hibernate objects with webservice isn't a good idea. Such objects often have parent<->child relations which is hard to send using document style. Maybe you can introduce DTOs. On 5/17/07, Bill Graham < [EMAIL PROTECTED]> wrote: > > This is probably caused by Hibernate lazy loading. The Hibernate session was > closed before the XFire servlet called methods on your beans to marshall > into XML. The fix is to use Spring's OpenSessionInViewFilter around your > XFire servlet. > > > ----- Original Message ---- > From: Slawomir Krolik < [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > > To: [email protected] > Sent: Wednesday, May 16, 2007 5:30:57 PM > Subject: [xfire-user] Hibernate+Spring+XFire could not initialize proxy - > the owning Session was closed > > Hi! > > I have problem and I didn't found any solution after few days of searching > When I'm trying to any lazy initialized collection or object I've got sth > like that: > -----------cut---------------------- > ERROR - LazyInitializationException.<init>(19) | 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(AbstractLazyIniti alizer.java:60) > at > org.hibernate.proxy.AbstractLazyInitializer.getImplementation (AbstractLazyInitializer.java:111) > at > org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke > (CGLIBLazyInitializer.java:172) > at > org.saweko.om.security.model.Role$$EnhancerByCGLIB$$50c1ce29.fillDTO (<generated>) > at > org.saweko.om.security.model.User.fillDTO(User.java:195) > ... > -----------cut---------------------- > I'm using Spring 2.05 with XFire 1.6 and Hibernate 3.2.0 > I'm using JSR181 anotations to expose my SecurityService(interface) and > SecurityServiceImpl(Implementation class) as XFire WS > > My application structure: > > > [Permissions]----(Set)many-to-one----[User]---(Set)many-to-one---[Role] > <Persistent>, collections are bi-directional > > next I've DAO's objects that operates on POJO's, mostly CRUD operations, one > persistent object type - one DAO to perform operations > DAO classes are used by one class named Security Controller that perform > more complicated operations > next Security Controller is wrapped using TransactionProxyFactoryBean for > proper handling transactions > and finally there is interface called SecurityService and implementing it > class SecurityServiceImpl that uses proxied SecurityController class for > exposing > it's operations as web service using JSR181 > > Operations performed on simple data types works perfectly, operations > working with collections of simple data types like Set<String> works good > too but > when I try access any of lazy initialized objects exception occurs > My applicationContext.xml: > > <import > resource="classpath:org/codehaus/xfire/spring/xfire.xml" > /> > <bean id="xfire.annotationServiceFactory" > > class="org.codehaus.xfire.annotations.AnnotationServiceFactory > "> > <constructor-arg index="0"> > <ref bean="xfire.commonsAnnotations " /> > </constructor-arg> > <constructor-arg index="1"> > <ref bean="xfire.transportManager" /> > </constructor-arg> > <constructor-arg index="2"> > <ref bean="xfire.aegisBindingProvider " /> > </constructor-arg> > </bean> > <bean id=" xfire.commonsAnnotations" > > class="org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations" > /> > <bean id="LocalDB" > ...connection 2 local postgresql db .../> > <bean id="HBSessionFactory" > > class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> > ....hibernate session factory > </bean> > <bean id="userDAOtarget" > .../> > <bean id="roleDAOtarget" > .../> > <bean id="permissionDAOtarget" > .../> > <bean id="securityCtrlTarget" > > class="org.saweko.om.security.ctrl.impl.SecurityController"> > <property name="userDAO"> > <ref bean="userDAOtarget" /> > </property> > <property name="roleDAO"> > <ref bean="roleDAOtarget" /> > </property> > <property name="permissionDAO"> > <ref bean="permissionDAOtarget" /> > </property> > </bean> > > <bean id="securityControllerProxy" > > class=" org.springframework.transaction.interceptor.TransactionProxyFactoryBean > "> > <property name="transactionManager"> > <ref bean="transactionManager" /> > </property> > <property name="target"> > <ref bean="securityCtrlTarget" /> > </property> > <property name="transactionAttributes"> > <props> > <prop key="*">PROPAGATION_REQUIRED</prop> > </props> > </property> > </bean> > <bean id="transactionManager" > > class="org.springframework.orm.hibernate3.HibernateTransactionManager"> > <property name="sessionFactory"> > <ref bean="HBSessionFactory" /> > </property> > </bean> > <bean id="securityServiceBean" > > class="org.saweko.om.service.impl.SecurityServiceImpl "> > <property name="securityController"> > <ref bean="securityControllerProxy" /> > </property> > </bean> > <bean id="securityServiceXfire" > > class="org.codehaus.xfire.spring.remoting.XFireExporter"> > <property name="serviceBean"> > <ref bean="securityServiceBean" /> > </property> > <property name="serviceClass"> > <value> > > org.saweko.om.service.impl.SecurityServiceImpl > </value> > </property> > <property name="serviceFactory"> > <ref bean="xfire.annotationServiceFactory" /> > </property> > </bean> > <bean id="addressingHandler" > > class="org.codehaus.xfire.addressing.AddressingInHandler" > /> > > > What is solution 2 problem? > > > > > > ________________________________ > Yahoo! oneSearch: Finally, mobile search that gives answers, not web links. -- ----- When one of our products stops working, we'll blame another vendor within 24 hours. --------------------------------------------------------------------- To unsubscribe from this list please visit: http://xircles.codehaus.org/manage_email
