That's strange, could you tell us where the serialization comes from?
Are you using clientside state saving mecanism? You managed properties
looks good to me, and if serialization occurs under the control of JSF,
the unserialized B and the unserialized A.b should be the same (same
value *and* same instance). Please also provide us with full form, it
might be useful to understand what happen.

En l'instant précis du 29/05/07 15:37, Trumml s'exprimait en ces termes:
> 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)
>>>>>       
>>>>>           
>>>>     
>>>>         
>>>   
>>>       
>>
>>     
>
>   

Reply via email to