Hello, 

I somehow manage to get a LazyInitializationException when I use Seam-managed 
transactions.

What I want to do is retrieve an id from a request, load the usecase with said 
id and make it available to my jsf page - just like the dvd.xhtml in the dvd 
store example does for dvds.

When I use @Factory it works fine, but when I try to use page actions and @Out 
the usecase I get a LIE when it tries to access the first collection attribute 
(the application frame is generated with seam-gen and unmodified, I use Seam 
1.1CR2 and JBoss AS 4.0.5).

My Bean:
@Stateful
  | @Name("usecasesBean")
  | public class UsecasesBean implements Usecases {
  |     
  |     @PersistenceContext
  |     private EntityManager em;
  |     
  |     @In(required=false, scope=ScopeType.EVENT)
  |     private String usecaseId;
  |     
  |     @Out(required = false)
  |     private Usecase usecase;
  |     
  |     @DataModel
  |         List<Usecase> usecases;
  | 
  |     @SuppressWarnings("unchecked")
  |     @Factory("usecases")
  |     public void findAllUsecases() {
  |             System.out.println("findAllUsecases...");
  |             System.out.println("usecaseId: " + usecaseId);
  |             usecases = (List<Usecase>) em.createQuery("Select u from 
Usecase u order by u.name").getResultList();
  |     }
  | 
  |     public void loadUsecaseById() {
  |             System.out.println("loadById...");
  |             if(usecaseId == null) {
  |                     System.out.println("usecaseId was null");
  |                     usecaseId = "1";
  |             }
  |             this.usecase = em.find(Usecase.class, 
Long.parseLong(usecaseId));
  |             System.out.println("Usecase: " + usecase.getName());
  |     }
  |     
  | //  @Factory("usecase")
  | //  public Usecase loadUsecaseById() {
  | //          System.out.println("loadById...");
  | //          if(usecaseId == null) {
  | //                  System.out.println("usecaseId was null");
  | //                  usecaseId = "1";
  | //          }
  | //          return em.find(Usecase.class, Long.parseLong(usecaseId));
  | //  }
  | }

My pages.xml:<pages>
  |     <page view-id="/showUsecase.xhtml" 
action="#{usecasesBean.loadUsecaseById}" />
  | </pages>
TransactionalSeamPhaseListener is loaded in faces-config.xml.

When I exchange the loadUsecaseById() methods, comment the @Out usecase out and 
remove the pages.xml this works fine but the way above I get the following 
exception:
01:35:21,631 INFO  [STDOUT] findAllUsecases...
  | 01:35:21,635 INFO  [STDOUT] usecaseId: null
  | 01:35:21,667 INFO  [STDOUT] Hibernate: select usecase0_.ID as ID210_, 
usecase0_.summary as summary210_, usecase0_.standardWorkflow as standard7_210_, 
usecase0_.name as name210_, usecase0_.priority as priority210_, 
usecase0_.version as version210_, usecase0_.status as status210_ from Usecase 
usecase0_ order by usecase0_.name
  | 01:35:23,555 INFO  [STDOUT] Filtering URL ...
  | 01:35:23,567 INFO  [STDOUT] loadById...
  | 01:35:23,570 INFO  [STDOUT] Hibernate: select usecase0_.ID as ID210_0_, 
usecase0_.summary as summary210_0_, usecase0_.standardWorkflow as 
standard7_210_0_, usecase0_.name as name210_0_, usecase0_.priority as 
priority210_0_, usecase0_.version as version210_0_, usecase0_.status as 
status210_0_ from Usecase usecase0_ where usecase0_.ID=?
  | 01:35:23,583 INFO  [STDOUT] Usecase: Login User
  | 01:35:23,635 ERROR [LazyInitializationException] failed to lazily 
initialize a collection of role: com.example.usecases.model.Usecase.actors, no 
session or session was closed
  | org.hibernate.LazyInitializationException: failed to lazily initialize a 
collection of role: com.example.usecases.model.Usecase.actors, no session or 
session was closed
  |     at 
org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
  |     at 
org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
  |     at 
org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97)
  |     at org.hibernate.collection.PersistentBag.size(PersistentBag.java:225)
  |     at javax.faces.model.ListDataModel.isRowAvailable(ListDataModel.java:84)
  |     at javax.faces.model.ListDataModel.setRowIndex(ListDataModel.java:97)
  |     at 
javax.faces.model.ListDataModel.setWrappedData(ListDataModel.java:111)
  |     at javax.faces.model.ListDataModel.<init>(ListDataModel.java:42)
  |     at com.sun.facelets.component.UIRepeat.getDataModel(UIRepeat.java:127)
  |     at com.sun.facelets.component.UIRepeat.setIndex(UIRepeat.java:305)
  |     at com.sun.facelets.component.UIRepeat.process(UIRepeat.java:333)
  |     at com.sun.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:617)
  |     at 
com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:234)
  |     at 
com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:239)
  |     at 
com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:580)
  |     at 
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384)
  |     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |     at 
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
  |     at 
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
  |     at 
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
  |     at 
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
  |     at 
com.example.usecases.web.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:60)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |     at 
org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:32)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |     at 
org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:46)
  |     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.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.Http11AprProcessor.process(Http11AprProcessor.java:833)
  |     at 
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:639)
  |     at 
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1285)
  |     at java.lang.Thread.run(Thread.java:595)
  | 01:35:23,640 ERROR [STDERR] 07.12.2006 01:35:23 
com.sun.facelets.FaceletViewHandler handleRenderException
  | SCHWERWIEGEND: Error Rendering View[/showUsecase.xhtml]
  | org.hibernate.LazyInitializationException: failed to lazily initialize a 
collection of role: com.example.usecases.model.Usecase.actors, no session or 
session was closed
  |     at 
org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
  |     at 
org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
  |     at 
org.hibernate.collection.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:97)
  |     at org.hibernate.collection.PersistentBag.size(PersistentBag.java:225)
  |     at javax.faces.model.ListDataModel.isRowAvailable(ListDataModel.java:84)
  |     at javax.faces.model.ListDataModel.setRowIndex(ListDataModel.java:97)
  |     at 
javax.faces.model.ListDataModel.setWrappedData(ListDataModel.java:111)
  |     at javax.faces.model.ListDataModel.<init>(ListDataModel.java:42)
  |     at com.sun.facelets.component.UIRepeat.getDataModel(UIRepeat.java:127)
  |     at com.sun.facelets.component.UIRepeat.setIndex(UIRepeat.java:305)
  |     at com.sun.facelets.component.UIRepeat.process(UIRepeat.java:333)
  |     at com.sun.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:617)
  |     at 
com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:234)
  |     at 
com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:239)
  |     at 
com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:580)
  |     at 
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384)
  |     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |     at 
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
  |     at 
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
  |     at 
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
  |     at 
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
  |     at 
com.example.usecases.web.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:60)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |     at 
org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:32)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |     at 
org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:46)
  |     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.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.Http11AprProcessor.process(Http11AprProcessor.java:833)
  |     at 
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:639)
  |     at 
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1285)
  |     at java.lang.Thread.run(Thread.java:595)
  | 01:35:23,676 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:60)
  |     at 
org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
  |     at 
org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:198)
  |     at 
com.example.usecases.model.Workflow_$$_javassist_87.getWorkflowSteps(Workflow_$$_javassist_87.java)
  |     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |     at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |     at java.lang.reflect.Method.invoke(Method.java:585)
  |     at 
org.apache.myfaces.el.PropertyResolverImpl.getProperty(PropertyResolverImpl.java:438)
  |     at 
org.apache.myfaces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:82)
  |     at 
com.sun.facelets.el.LegacyELContext$LegacyELResolver.getValue(LegacyELContext.java:141)
  |     at com.sun.el.parser.AstValue.getValue(AstValue.java:117)
  |     at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:192)
  |     at 
com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
  |     at 
com.sun.facelets.el.LegacyValueBinding.getValue(LegacyValueBinding.java:56)
  |     at com.sun.facelets.component.UIRepeat.getValue(UIRepeat.java:143)
  |     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |     at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |     at java.lang.reflect.Method.invoke(Method.java:585)
  |     at com.sun.facelets.util.DevTools.writeAttributes(DevTools.java:240)
  |     at com.sun.facelets.util.DevTools.writeStart(DevTools.java:284)
  |     at com.sun.facelets.util.DevTools.writeComponent(DevTools.java:189)
  |     at com.sun.facelets.util.DevTools.writeComponent(DevTools.java:207)
  |     at com.sun.facelets.util.DevTools.debugHtml(DevTools.java:107)
  |     at 
com.sun.facelets.FaceletViewHandler.handleRenderException(FaceletViewHandler.java:677)
  |     at 
com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:646)
  |     at 
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384)
  |     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |     at 
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672)
  |     at 
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463)
  |     at 
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398)
  |     at 
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
  |     at 
com.example.usecases.web.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:60)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |     at 
org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:32)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |     at 
org.jboss.seam.servlet.SeamExceptionFilter.doFilter(SeamExceptionFilter.java:46)
  |     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.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.Http11AprProcessor.process(Http11AprProcessor.java:833)
  |     at 
org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:639)
  |     at 
org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1285)
  |     at java.lang.Thread.run(Thread.java:595)
  | 
As you can see the page function is action is correctly called and the usecase 
is loaded from the db but I get a LIE when I access the first collection 
attribute (actors.) in my jsf.

Can someone please explain me why this happens.

Thanks a lot in advance.

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3991826#3991826

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3991826
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to