Large Object Exception/Serializing Java Objects
От | Joe Shevland |
---|---|
Тема | Large Object Exception/Serializing Java Objects |
Дата | |
Msg-id | 001101bf4345$9f502f60$6464a8c0@kpi.com.au обсуждение исходный текст |
Список | pgsql-interfaces |
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.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 = newObjectOutputStream(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
В списке pgsql-interfaces по дате отправления: