Joe, what version of the driver are you using?
The Z error I thought was fixed some time ago. Originally the fastpath
code was based on libpq, but I found that the backend also send a packet
labeled Z, so added a check for it.
Peter
--
Peter Mount
Enterprise Support
Maidstone Borough Council
Any views stated are my own, and not those of Maidstone Borough Council.
-----Original Message-----
From: Joe Shevland [mailto:shevlandj@kpi.com.au]
Sent: Friday, December 10, 1999 7:35 PM
To: pgsql-interfaces@postgreSQL.org
Subject: [INTERFACES] Large Object Exception/Serializing Java Objects
Hi all,
I'm trying to persist some Java objects in a PostgreSQL database using
JDBC
(2.0).
I get the following error:
Fri Dec 10 11:26:15 PST 1999 - [copyright] EJBoss - The EJB Open Source
Server v0.9
Fri Dec 10 11:26:48 PST 1999 - [Exception]
Fri Dec 10 11:26:48 PST 1999 - FastPath protocol error: Z
FastPath protocol error: Zat postgresql.fastpath.Fastpath.fastpath(Fastpath.java:159)at
postgresql.fastpath.Fastpath.fastpath(Fastpath.java:188)atpostgresql.fastpath.Fastpath.getInteger(Fastpath.java:200)at
postgresql.largeobject.LargeObjectManager.create(LargeObjectManager.java
:176
)at
org.ejboss.storage.PGSecondaryStorage.serialize(PGSecondaryStorage.java:
245)at
org.ejboss.storage.PGSecondaryStorage.store(PGSecondaryStorage.java:117)at
org.ejboss.ejb.EnterpriseBeanWrapper.passivate(EnterpriseBeanWrapper.jav
a:34
3)at
org.ejboss.managers.EnterpriseBeanWrapperManager$LRUThread.run(Enterpris
eBea
nWrapperManager.java:403)at java.lang.Thread.run(Thread.java:479)
This occurs upon trying to create the large object... before going to
the
source I just wanted to check that this is supposed to work and all
that.
Out of interest, here's the offending code fragment (it may be just
plain
wrong... any ideas appreciated!):
private int serialize(EnterpriseBean bean) throws IOException, SQLException { ByteArrayOutputStream
byte_out= new ByteArrayOutputStream(); ByteArrayInputStream byte_in; ObjectOutputStream obj_out =
new
ObjectOutputStream(byte_out);
byte[] classbytes; byte buf[] = new byte[2048]; int
read=0;
// lobj was created in the constructor...
// Create the ejb object using the PostgreSQL specific blob
support int oid =
lobj.create(LargeObjectManager.READ|LargeObjectManager.WRITE);
LargeObject obj = lobj.open(oid,LargeObjectManager.WRITE); DriverManager.println("[PGSecondaryStorage] Got
largeobject
obj="+obj);
// Copy the EJB to a temporary byte array obj_out.writeObject( bean ); obj_out.flush();
classbytes= byte_out.toByteArray(); byte_in = new ByteArrayInputStream(classbytes);
// Copy the data to the large object while((read=byte_in.read(buf,0,2048))>0) {
obj.write(buf,0,read); }
obj.close();
return oid; }
Thanks,
Joe.
---
Joe Shevland
Principal Consultant
KPI Logistics Pty Ltd
mailto:shevlandj@kpi.com.au
http://www.kpi.com.au
************