Hi, You have a reference to a connection in your Stateful session bean. When the been is passivated it is basically serialized to a persistent store (e.g. disk). Obviously it tries to serialize all you fields. What you should do is drop the reference to the connection (or make the field trainsient) and reinitialize when ejbActivate is called (or in setEntityContext() ).
cheers, Joost. -----Original Message----- From: Jarecsni Janos [mailto:[EMAIL PROTECTED]] Sent: Friday, September 28, 2001 11:47 AM To: JBoss-List Subject: [JBoss-user] Passivating EJBs Hi, thanks for your answers to my previous question ("Performance..."). I got "a bit" more confident that this project will finally succeed - thanks to JBoss :) Now we got a little problem, which I'm sure is a consequence of our misunderstanding of some basic rules... When JBoss tries to passivate some EJBs, we get the following exception: [Container factory] java.rmi.ServerException: Could not passivate; nested exception is: [Container factory] java.io.NotSerializableException: org.jboss.pool.jdbc.xa.XAPoolDataSource [Container factory] java.io.NotSerializableException: org.jboss.pool.jdbc.xa.XAPoolDataSource [Container factory] at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1148) [Container factory] at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366) [Container factory] at java.io.ObjectOutputStream.outputClassFields(ObjectOutputStream.java:182 7) [Container factory] at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:48 0) [Container factory] at java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1214) [Container factory] at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366) [Container factory] at org.jboss.ejb.plugins.StatefulSessionFilePersistenceManager.passivateSes sion (StatefulSessionFilePersistenceManager.java:285) [Container factory] at org.jboss.ejb.plugins.StatefulSessionInstanceCache.passivate(StatefulSes sion InstanceCache.java:67) [Container factory] at org.jboss.ejb.plugins.AbstractInstanceCache$1.execute(AbstractInstanceCa che. java:709) [Container factory] at org.jboss.util.WorkerQueue$QueueLoop.run(WorkerQueue.java:199) [Container factory] at java.lang.Thread.run(Thread.java:484) We - following the Petstore example - have a member variable of a javax.sql.DataSource in each of our beans that will want to access the database. In each method we ask for a connection from this datasource. Now it's obvious that this object is not serializable. My question is how to work this problem around? I mean if I ask for a DataSource in each method (so that no such member variable exist) won't it slow down these methods a lot (JNDI lookups...). Or is there any other ways to do it? Thanks very much in advance. Cheers, Janos Budapest, Hungary. _______________________________________________ JBoss-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-user _______________________________________________ JBoss-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-user
