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