Hello all.

I'm porting the display side of an  existing EJB3 backed webapp to
Seam w/ JSF/Facelets  and EJB3 on Jboss AS.
( jboss 4.0.5GA w/ Seam 1.1.1GA  )

A few pages are working front to back so the plumbing is at least generally 
functional.

The current issue is that i have  a Seam managed bean (pojo)  into which is 
injected another pojo that has a SESSION scope.

Things work fine if my first object is event scoped or session scoped, but if i 
change the scope to "PAGE"  then i get this serialization Exception.

is this supposed to work ? 

 
  | javax.faces.FacesException: java.io.NotSerializableException: 
java.lang.ThreadLocal
  |     at 
org.apache.myfaces.shared_impl.util.StateUtils.getAsByteArray(StateUtils.java:190)
  |     at 
org.apache.myfaces.shared_impl.util.StateUtils.construct(StateUtils.java:150)
  |     at 
org.apache.myfaces.renderkit.html.HtmlResponseStateManager.writeState(HtmlResponseStateManager.java:102)
  |     at 
org.apache.myfaces.application.jsp.JspStateManagerImpl.writeState(JspStateManagerImpl.java:430)
  |     at 
org.jboss.seam.jsf.SeamStateManager.writeState(SeamStateManager.java:66)
  |     at 
com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:599)
  |     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.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 
com.pimp.servlet.BrandRedirectFilter.doFilter(BrandRedirectFilter.java:80)
  |     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.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:595)
  | Caused by: java.io.NotSerializableException: java.lang.ThreadLocal
  |     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1081)
  |     at 
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
  |     at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
  |     at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
  |     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
  |     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
  |     at java.util.ArrayList.writeObject(ArrayList.java:569)
  |     at sun.reflect.GeneratedMethodAccessor198.invoke(Unknown Source)
  |     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |     at java.lang.reflect.Method.invoke(Method.java:585)
  |     at 
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)
  |     at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)
  |     at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
  |     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
  |     at 
java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
  |     at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
  |     at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
  |     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
  |     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
  |     at java.util.HashMap.writeObject(HashMap.java:1039)
  |     at sun.reflect.GeneratedMethodAccessor202.invoke(Unknown Source)
  |     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |     at java.lang.reflect.Method.invoke(Method.java:585)
  |     at 
java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)
  |     at 
java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)
  |     at 
java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
  |     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
  |     at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1251)
  |     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
  |     at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1251)
  |     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
  |     at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1251)
  |     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
  |     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
  |     at 
org.apache.myfaces.shared_impl.util.StateUtils.getAsByteArray(StateUtils.java:180)
  |     ... 32 more
  | 


also, is this mention of JspStateManager in the stacktrace a concern given that 
 JSPs aren't supposed to be involved here at all ? 


  | 
org.apache.myfaces.application.jsp.JspStateManagerImpl.writeState(JspStateManagerImpl.java:430)
  | 


Here are the classes in my stripped down test case.
the bean that's injected:

  | @Name("loginSessionFoo")
  | @Scope(ScopeType.SESSION)
  | public class TestSessionScoped implements Serializable {
  | 
  |     @Logger 
  |     private Log log;
  | 
  |     private String foo;
  |     public String getFoo() {
  |             return foo;
  |     }
  |     public void setFoo(String foo) {
  |             this.foo = foo;
  |     }
  |     
  | }
  | 

the one into which it is injected

  | @Scope(ScopeType.PAGE)
  | @Name("contentDisplay")
  | public class ContentDisplay implements Serializable {
  | 
  |     @Logger
  |     private Log log;
  | 
  |     private Date oneDayAgo;
  |     
  |     @In(value="loginSessionFoo", create=true)
  |     private TestSessionScoped foo;
  |     
  |     /**
  |      * Currently acts only to give out a date  1 day ago today to see
  |      * that's used for display calculations.
  |      *  
  |      */
  |     //CHECK does this still seem like a good idea
  |     @Create
  |     public void initialize() {
  |             
  |             Calendar cal = new GregorianCalendar();
  |             cal.add(GregorianCalendar.DAY_OF_YEAR, -1);
  |             this.oneDayAgo =cal.getTime(); 
  |     }
  | 
  |      // some action methods removed....
  | }
  | 

any pointers appreciated. thanks.

radu

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

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

Reply via email to