Well, I tried to link my beans with the faces-config.xml (see http://www.jsffaq.com/Wiki.jsp?page=HowToAccessOneManagedBeanFromAnotherManagedBean http://www.jsffaq.com/Wiki.jsp?page=HowToAccessOneManagedBeanFromAnotherManagedBean ). In my case B is a manged property of A.
Now I press a command button, a property of A is changed and additionally properties of B are changed (A accesses B via the managed property mechanism). But unfortunately the properties of B aren't updated in my view. So I added debug logging and found out, that after pressing the command button A is serialized (with B as a member variable) and after the deserialization the wrong B bean is updated (using System.identityhascode(...). If I use the faces-config.xml to link the beans, isn't it correct that B is a member of A (see my sample below)...?!?!? class B implements Serializable { String name; String address; getName() { .... } class A implements Serializable { String name; B b; getB() { ... <managed-bean> <managed-bean-name>A</managed-bean-name> <managed-bean-class>at.co.systema.A</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>b</property-name> <property-class>at.co.systema.B</property-class> <value>#{b}</value> </managed-property> </managed-bean> <managed-bean> <managed-bean-name>b</managed-bean-name> <managed-bean-class>at.co.systema.ce.B</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> David Delbecq wrote: > > If you don't want serialized bean, make them request scope bean. > Session scope bean must be serializable whatever happen. > > Not sure i understand you last problem, but if you want to link B to A > (so A see the B instance managed by JSF) you can do this in > faces-config.xml, using managed-properties. That way, if A and B are > sessions scope, you are guaranteed they stay together. (This can also > work if B is session scope and A request, JSF will setup A at each > request) > > Hope this help. > > En l'instant précis du 23/05/07 17:39, Trumml s'exprimait en ces termes: >> Thanks for this short reply. >> But this serialization is a little bit problematic for me... >> I have a site with two different backing beans and a command button. The >> command button calls method A.1 from bean A, the site is reloaded (the >> method changes some properties of bean A) and all properties of A are >> renewed within the jsf site. Additionally A.1 changes some properties of >> bean B but those properties are not renewed within the view. >> So I tried to use component binding with bean B but this does not work >> because I can not use HtmlOutputText with my bean B because it is not >> serializable...? >> >> <h:commandButton value="action" action="#{A.1}" /> >> <h:outputText value="#{A.property}"/> >> <h:outputText value="#{B.property}"/> >> >> >> >> >> Werner Punz-2 wrote: >> >>> This has to be done due to the jsf inherent state saving and also some >>> app server serialize the sessions for clustering. >>> >>> Werner >>> >>> >>> Trumml schrieb: >>> >>>> I use MyFaces (1.1.5) with Tomahawk and Facelet support. I added the >>>> following commmand to my xhtlm site: >>>> <h:commandButton value="doXY" action="#{PatientNavigatorBean.doXY}" /> >>>> When I press this button an Exception is thrown because the >>>> PatientNavigatorBean is not serializable. My question is: which managed >>>> beans have to be serializable, when and why? >>>> When I add the Serializable interface to my managed bean everything >>>> works >>>> fine but I do want to know why I have to do this and are there possibly >>>> any >>>> fields in my bean which might be transient? >>>> >>>> => I already found a forum post but it does not contain the correct >>>> answer >>>> for my question i guess ( >>>> http://www.nabble.com/What-requires-implementing-the-Serializable-interface--tf991035.html#a2566919 >>>> http://www.nabble.com/What-requires-implementing-the-Serializable-interface--tf991035.html#a2566919 >>>> ) >>>> >>>> 16:16:37,983 ERROR [JspStateManagerImpl] Exiting serializeView - Could >>>> not >>>> serialize state: at.co.systema.ce.jsf.PatientNavigator >>>> java.io.NotSerializableException: at.co.systema.ce.jsf.PatientNavigator >>>> 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.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.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 java.util.ArrayList.writeObject(ArrayList.java:569) >>>> 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 >>>> 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.writeObject(ObjectOutputStream.java:302) >>>> at java.util.ArrayList.writeObject(ArrayList.java:569) >>>> 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 >>>> 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.writeObject(ObjectOutputStream.java:302) >>>> at java.util.HashMap.writeObject(HashMap.java:1039) >>>> at sun.reflect.GeneratedMethodAccessor87.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.writeObject(ObjectOutputStream.java:302) >>>> at java.util.ArrayList.writeObject(ArrayList.java:569) >>>> 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 >>>> 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.writeObject(ObjectOutputStream.java:302) >>>> at java.util.ArrayList.writeObject(ArrayList.java:569) >>>> 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 >>>> 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.writeObject(ObjectOutputStream.java:302) >>>> at >>>> org.apache.myfaces.application.jsp.JspStateManagerImpl.serializeView(JspStateManagerImpl.java:512) >>>> at >>>> org.apache.myfaces.application.jsp.JspStateManagerImpl.saveSerializedViewInServletSession(JspStateManagerImpl.java:453) >>>> at >>>> org.apache.myfaces.application.jsp.JspStateManagerImpl.saveSerializedView(JspStateManagerImpl.java:312) >>>> at >>>> com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:594) >>>> at >>>> org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41) >>>> at >>>> org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:132) >>>> at >>>> javax.faces.webapp.FacesServlet.service(FacesServlet.java:140) >>>> at >>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) >>>> at >>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) >>>> at >>>> org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147) >>>> 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:75) >>>> 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:214) >>>> at >>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) >>>> at >>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) >>>> at >>>> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) >>>> at >>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) >>>> at >>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) >>>> at >>>> org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:66) >>>> at >>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) >>>> at >>>> org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:162) >>>> at >>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) >>>> at >>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) >>>> at >>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) >>>> at >>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) >>>> at >>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) >>>> at >>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) >>>> at >>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) >>>> at >>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) >>>> at >>>> org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) >>>> at >>>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) >>>> at >>>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) >>>> at >>>> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) >>>> at >>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) >>>> at >>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) >>>> at >>>> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) >>>> at >>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) >>>> at java.lang.Thread.run(Thread.java:595) >>>> >>> >>> >> >> > > > -- View this message in context: http://www.nabble.com/Why-do-managed-beans-must-implement-the-Serializable-interface-tf3796802.html#a10854246 Sent from the MyFaces - Users mailing list archive at Nabble.com.