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]> > 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( AbstractLazyInitializer.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
