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

Reply via email to