Received: from hobart.southcom.com.au (root@hobart.southcom.com.au [203.60.16.2]) by hub.org (8.9.3/8.9.3) with ESMTP id TAA10867 for ; Thu, 9 Dec 1999 19:33:23 -0500 (EST) (envelope-from shevlandj@kpi.com.au) Received: from elite (pAd0.hbt.southcom.com.au [203.60.23.209]) by hobart.southcom.com.au (8.9.3/8.9.3) with SMTP id LAA04687 for ; Fri, 10 Dec 1999 11:33:12 +1100 (EST) Message-ID: <001101bf4345$9f502f60$6464a8c0@kpi.com.au> From: "Joe Shevland" To: Subject: Large Object Exception/Serializing Java Objects Date: Fri, 10 Dec 1999 11:34:43 -0800 Organization: KPI Logistics Pty Ltd MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.00.2919.6600 X-MIMEOLE: Produced By Microsoft MimeOLE V5.00.2919.6600 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: Z at postgresql.fastpath.Fastpath.fastpath(Fastpath.java:159) at postgresql.fastpath.Fastpath.fastpath(Fastpath.java:188) at postgresql.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.java:34 3) at org.ejboss.managers.EnterpriseBeanWrapperManager$LRUThread.run(EnterpriseBea 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 large object 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