Bugs item #565237, was opened at 2002-06-06 02:31 You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=376685&aid=565237&group_id=22866
Category: JBossServer Group: v3.0 Rabbit Hole >Status: Closed >Resolution: Fixed Priority: 5 Submitted By: Stephen Coy (scoy) >Assigned to: Scott M Stark (starksm) Summary: StatefulHandleImpl not serializable Initial Comment: JBoss 3.0.0 final MacOS X 10.1.5 Java 1.3.1 The class org.jboss.proxy.ejb.handle.StatefulHandleImpl is not properly serializable because (I think) it has an org.jboss.invocation.Invoker member. Some invoker implementations are serializable and some are not. I have a stateful session bean containing a collection of data objects containing back pointers (via javax.ejb.Handle) to the session bean. Passivation of the session bean fails while serializing the data objects: 2002-06-06 18:06:23,806 ERROR [org.jboss.logging.Log4jService$ThrowableListenerLoggingAdapter] unhandled throwable java.rmi.ServerException: Could not passivate; nested exception is: java.rmi.MarshalException: Invalid remote object java.rmi.MarshalException: Invalid remote object at java.rmi.server.RemoteObject.writeObject(RemoteObject.java:153) at java.lang.reflect.Method.invoke(Native Method) at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStrea m.java:1864) at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.jav a:1210) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java: 366) at org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.writeExtern al(JRMPInvokerProxy.java:149) at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.jav a:1180) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java: 366) at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStrea m.java:1827) at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStrea m.java:480) at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.jav a:1214) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java: 366) at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStrea m.java:1827) at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStrea m.java:480) at com.whitesmiths.sacha.ejb.worklists.interfaces.WorklistElement. writeObject(Unknown Source) at java.lang.reflect.Method.invoke(Native Method) at java.io.ObjectOutputStream.invokeObjectWriter(ObjectOutputStrea m.java:1864) at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.jav a:1210) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java: 366) at java.io.ObjectOutputStream.outputArray(ObjectOutputStream.java: 1098) at java.io.ObjectOutputStream.checkSubstitutableSpecialClasses(Ob jectOutputStream.java:456) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java: 361) at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStrea m.java:1827) at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStrea m.java:480) at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.jav a:1214) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java: 366) at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStrea m.java:1827) at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStrea m.java:480) at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.jav a:1214) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java: 366) at org.jboss.ejb.plugins.StatefulSessionFilePersistenceManager.pas sivateSession(StatefulSessionFilePersistenceManager.java:288) at org.jboss.ejb.plugins.StatefulSessionInstanceCache.passivate(Sta tefulSessionInstanceCache.java:78) at org.jboss.ejb.plugins.AbstractInstanceCache$1.execute(AbstractIn stanceCache.java:615) at org.jboss.util.WorkerQueue$QueueLoop.run(WorkerQueue.java:20 6) at java.lang.Thread.run(Thread.java:496) 2002-06-06 18:06:39,260 DEBUG [org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy] Resized cache for bean Priv: old capacity = 1000000, new capacity = 50 2002-06-06 18:06:59,049 DEBUG [org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy] Resized cache for bean GSMServiceFacade: old capacity = 1000000, new capacity = 50 2002-06-06 18:07:00,982 DEBUG [org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy] Resized cache for bean NumberStatus: old capacity = 1000000, new capacity = 50 2002-06-06 18:07:02,759 DEBUG [org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy] Resized cache for bean GSMService: old capacity = 1000000, new capacity = 50 2002-06-06 18:07:11,227 DEBUG [org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy] Resized cache for bean Numbers: old capacity = 1000000, new capacity = 50 2002-06-06 18:07:35,111 DEBUG [org.jboss.resource.connectionmanager.IdleRemover] run: IdleRemover notifying pools, interval: 450000 ---------------------------------------------------------------------- >Comment By: Scott M Stark (starksm) Date: 2002-06-14 19:08 Message: Logged In: YES user_id=175228 The custom session object streams needed to handle remote objects other than ejb interfaces. ---------------------------------------------------------------------- Comment By: Stephen Coy (scoy) Date: 2002-06-06 02:40 Message: Logged In: YES user_id=463096 I've done some more debugging. At serialisation time, the StatefulHandleImpl invoker is an instance of org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy, which is Externalizable and should be OK. However, it is proxying an instance of org.jboss.invocation.jrmp.server.JRMPInvoker which is *not* serializable. ---------------------------------------------------------------------- You can respond by visiting: http://sourceforge.net/tracker/?func=detail&atid=376685&aid=565237&group_id=22866 _______________________________________________________________ Don't miss the 2002 Sprint PCS Application Developer's Conference August 25-28 in Las Vegas - http://devcon.sprintpcs.com/adp/index.cfm?source=osdntextlink _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development