Yes, the classes and methods in the service layer are annotated with @Transactional.
It seems that it's working now, It seems that the class that need access to the retrieved objects *must* be annotated with @Component In my case I had a MainBean that created an AuxBean using new(), the MainBean was annotated with @Component, but AuxBean was not because I thought that as it was created inside the MainBean then it should share the persistence context of the MainBean. To fix it, I annotated AuxBean with @Component and replaced the new() in MainBean for an @Autowired. On 6/12/09, Cagatay Civici <[email protected]> wrote: > Are you sure you have the @Transactional around? > > > On Fri, Jun 12, 2009 at 4:52 PM, Alejandro Valdez > <[email protected]> wrote: > > > I'm sorry to insist (I don't like to beg for help), but I really can't > > figure out how Orchestra persistence context works with Hibernate, I'm > > just getting LazyInitializationException with the message "could not > > initialize proxy - no Session". > > > > Since my first e-mail I've implemented my DAO classes extending > > HibernateDaoSupport, but that didn't solve the issue. > > > > I think that there is something wrong with the way the application is > > layered (because the service/dao layer beans don't belong to any > > conversation): > > > > [conversation scope beans] -> [service layer] -> [dao layer] -> > [hibernate] > > > > Or the persistence context feature from Orchestra isn't working. > > > > The (hibernate proxied) objects are correctly retrieved in the > > dao/service layers, but LazyInitializationException is thrown when > > they are accessed from a conversation scope beans. > > > > Well, hope someone can give me a hand. > > > > PS: Again, I'm sorry to insist. > > > > > > > > This is the kind of stack trace that I get: > > > > org.hibernate.LazyInitializationException: could not > initialize proxy > > - no Session > > > org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:86) > > > org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:140) > > > org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190) > > > com.test.db.dto.AddressDto_$$_javassist_18.toString(AddressDto_$$_javassist_18.java) > > > com.sun.facelets.util.DevTools.writeVariables(DevTools.java:168) > > > com.sun.facelets.util.DevTools.writeVariables(DevTools.java:145) > > > com.sun.facelets.util.DevTools.debugHtml(DevTools.java:109) > > > com.sun.facelets.FaceletViewHandler.handleRenderException(FaceletViewHandler.java:671) > > > com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:639) > > > org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100) > > > org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176) > > > com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106) > > > com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) > > > com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144) > > > javax.faces.webapp.FacesServlet.service(FacesServlet.java:245) > > > org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) > > > org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) > > > org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368) > > > org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495) > > > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378) > > > org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) > > > org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) > > > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) > > > org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67) > > > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > > > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) > > > org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101) > > > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > > > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) > > > org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105) > > > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > > > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) > > > org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilterHttp(RememberMeProcessingFilter.java:116) > > > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > > > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) > > > org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91) > > > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > > > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) > > > org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:174) > > > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > > > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) > > > org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277) > > > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > > > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) > > > org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89) > > > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > > > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) > > > org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235) > > > org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) > > > org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) > > > org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175) > > > org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236) > > > org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) > > > > > > > > > > > > > > > > On Sat, Jun 6, 2009 at 12:46 PM, Alejandro > > Valdez<[email protected]> wrote: > > > Hello list, I'm trying to integrate MyFaces Orchestra with Hibernate > > > (and Spring 2.5.6), I have already downloaded the example application > > > from > http://code.google.com/p/myfaces-orchestra-goodies/ where > an > > > HibernatePersistentContextFactory is provided, there is > also an > > > example of a DAO that extends the Spring's HibernateDaoSupport class. > > > > > > I don't like the idea of implement my DAOs extending a Spring class, > > > so instead I wrote them as the example shown below. > > > > > > It seems that I'm doing something wrong, because I'm having two kind > > > of HibernateExceptions at different points of my application, in one > > > case it's telling that a collection is used in another session, in the > > > other case that a session is closed. > > > > > > The application is layered in this way: [conversation score beans] -> > > > [service layer] -> [dao layer] -> [hibernate] > > > > > > I can't figure out how > HibernatePersistentContextFactory is assigning > > > the same session to the different DAOs in the dao layer, I think it > > > isn't happening and that is the cause of the exceptions. > > > > > > Hope someone can point me in the right direction. > > > > > > Examples: > > > > > > @Repository("userDAO") > > > public class HibernateUserDAO implements UserDAO { > > > > > > @Autowired(required=true) > > > private SessionFactory sessionFactory; > > > > > > public HibernateUserDAO() {} > > > > > > public Session getSession() { > > > return > sessionFactory.getCurrentSession(); > > > } > > > > > > public List<UserDto> getAll() { > > > Session session = getSession(); > > > Query query = session.createQuery("FROM UserDto AS user > ORDER BY > > > user.username ASC"); > > > return (List<UserDto>) query.list(); > > > } > > > > > > // other methods... > > > } > > > > > > > > > @Service("userService") > > > public class UserServiceImpl implements UserService { > > > > > > @Autowired(required=true) > > > private UserDAO userDAO; > > > > > > @Transactional(readOnly = true) > > > public List<UserDto> getAll(){ > > > return userDAO.getAll(); > > > } > > > // other methods... > > > } > > > > > > > > > @Component("userAdministrationBean") > > > @Scope("conversation.access") > > > @ConversationName("userAdministrationBean") > > > public class userAdministrationBean { > > > > > > UserDto currentUser; > > > @Autowired(required=true) > > > private UserService userSvc; > > > > > > public List<UserDto> getAllUsers() { > > > return this.userSvc.getAll(); > > > } > > > // other methods... > > > } > > > > > > > > > If you are still reading this, this is the interesting part of the > > > Spring application-context.xml: > > > > > > <tx:annotation-driven/> > > > > > > <!-- 3. the "entity manager" manager --> > > > <bean > id="persistentContextConversationInterceptor" > > > > class="org.apache.myfaces.orchestra.conversation.spring.PersistenceContextConversationInterceptor"> > > > <property name="persistenceContextFactory" > > > ref="persistentContextFactory"/> > > > </bean> > > > > > > <!-- 4. conversation - persistence adapter --> > > > <bean id="persistentContextFactory" > > > > class="my.application.db.HibernatePersistenceContextFactory"> > > > <property name="entityManagerFactory" ref="entityManagerFactory"/> > > > </bean> > > > > > > <bean id="transactionManager" > > > > class="org.springframework.orm.hibernate3.HibernateTransactionManager"> > > > <property name="sessionFactory" > ref="entityManagerFactory"/> > > > </bean> > > > > > > <bean id="entityManagerFactory" > > > > class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> > > > <property name="configLocation"> > > > > <value>classpath:hibernate.cfg.xml</value> > > > </property> > > > </bean> > > > > > > >

