Thread: BUG #1065: JDBC DataSource Serializability
The following bug has been logged online: Bug reference: 1065 Logged by: R. Lemos Email address: rslemos@nce.ufrj.br PostgreSQL version: 7.4 Operating system: Linux Description: JDBC DataSource Serializability Details: The JDBC2 pooled datasource(org.postgresql.jdbc2.optional.ConnectionPool), although implements java.io.Serializable, cannot be correctly serialized. Its superclass does not implement java.io.Serializable and have important fields marked as private. Either should the superclass be Serializable or its fields non-private (protected, friend or public). To reproduce the issue just create and setup a ConnectionPool, serialize and desserialize it (ByteArray*Stream will do). The new object doesn't have the properties correctly set. This may apply to other DataSource implementations (JDBC3 and non-pooled). PS: I could have corrected this and submitted the patch, but I don't know why are those properties private nor why isn't the superclass Serializable, so I could not preview the impact those changes would make.
> The following bug has been logged online: > > Bug reference: 1065 > Logged by: R. Lemos > > The JDBC2 pooled datasource(org.postgresql.jdbc2.optional.ConnectionPool), > although implements java.io.Serializable, cannot be correctly serialized. > Its superclass does not implement java.io.Serializable and have important > fields marked as private. The BaseDataSource class cannot be made Serializable because one of its subclasses (PoolingDataSource) cannot be serialized. The PoolingDataSource class has member variables which can contain active database connections which can't be persisted. > Either should the superclass be Serializable or its fields non-private > (protected, friend or public). > Simply marking the fields with a weaker access level won't magically persist them. This requires manually using writeObject and readObject. This problem also occurs in SimpleDataSource. I've attached the patch I've applied to the gborg cvs repository. Thanks for the report. Kris Jurka