Stateful session EJB is deployed on cluster members A and B. Client
calls a method
on the bean and the request is routed to server A, then A is shut
down. The client's
next method invocation is routed to server B where the bean's state
has been replicated.
Server A re-joins the cluster and B is shut down, the request routed
to A results
in the following:

java.rmi.NoSuchObjectException: Activation failed with:
java.io.StreamCorruptedException:
InputStream does not contain a serialized object
at java.io.ObjectInputStream.readStreamHeader(ObjectI nputStream.java:849)
at java.io.ObjectInputStream.(ObjectInputStream.java:168)
at weblogic.common.internal.ReplacerObjectInputStream .(ReplacerObjectInputStream.java:33)
at weblogic.common.internal.ReplacerObjectInputStream .(ReplacerObjectInputStream.java:43)
at weblogic.common.internal.ReplacerObjectInputStream .(ReplacerObjectInputStream.java:54)
at weblogic.ejb20.swap.PassivationUtils.read(Passivat ionUtils.java:50)
at weblogic.ejb20.swap.ReplicatedMemorySwap.read(Repl icatedMemorySwap.java:111)
at weblogic.ejb20.manager.StatefulSessionManager.getB ean(StatefulSessionManager.java:178)
at weblogic.ejb20.manager.StatefulSessionManager.preI nvoke(StatefulSessionManager.java:236)
at weblogic.ejb20.internal.BaseEJBObject.preInvoke(Ba seEJBObject.java:113)
at weblogic.ejb20.internal.StatefulEJBObject.preInvok e(StatefulEJBObject.java:148)
at com.access360.enrole.apps.ejb.organization.SearchM anagerBeanEOImpl.findAllPeople(SearchManagerBeanEO Impl.java:644)
at com.access360.enrole.webclient.organization.person .PeopleList.getPeople(PeopleList.java:148)
at com.access360.enrole.webclient.organization.person .PeopleListServlet.constructPeopleListXML(PeopleLi stServlet.java:284)
at com.access360.enrole.webclient.organization.person .PeopleListServlet.service(PeopleListServlet.java: 238)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:853)
at weblogic.servlet.internal.ServletStubImpl.invokeSe rvlet(ServletStubImpl.java:213)
at weblogic.servlet.internal.RequestDispatcherImpl.in clude(RequestDispatcherImpl.java:275)
at weblogic.servlet.internal.RequestDispatcherImpl.in clude(RequestDispatcherImpl.java:183)
at com.access360.enrole.webclient.organization.person .SubmitPersonAddServlet.forwardToPeopleList(Submit PersonAddServlet.java:134)
at com.access360.enrole.webclient.organization.person .SubmitPersonAddServlet.service(SubmitPersonAddSer vlet.java:114)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:853)
at weblogic.servlet.internal.ServletStubImpl.invokeSe rvlet(ServletStubImpl.java:213)
at weblogic.servlet.internal.WebAppServletContext.inv okeServlet(WebAppServletContext.java:1265)
at weblogic.servlet.internal.ServletRequestImpl.execu te(ServletRequestImpl.java:1631)
at weblogic.kernel.ExecuteThread.execute(ExecuteThrea d.java:137)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.ja va:120)


We are certain that the EJB's entire object graph is Serializable. Any
comments on
this failover scenario?