[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: java object serialization error



I suggest you direct your JNDI questions to a JNDI forum.
This list is for discussing use of OpenLDAP Software.

Kurt

At 07:22 AM 1/16/2004, buzz lightyear wrote:
>Hi
>
>I've been trying to serialize large java objects but I seem to be hitting a problem I can't resolve. I can easily serialize the object and bind it to the server. When I get to the point of reading/lookup and deserializing the object, something goes wrong just as the deserialization is passing through the first 1k boundry.
>
>Ie: my object consists of a number of byte arrays. During serialization with:
>
>ldapSupport.bind("dc=manager,dc=example,dc=com" , "cn=topManager", manager);
>
>.. I observe the byte arrays being serialized - and they are all serialized - with ..
>
>
>size =80
>size =48
>size =48
>size =48
>size =256
>size =256
>size =27
>size =65
>size =65
>size =64
>size =64
>size =64
>size =128
>size =129
>size =129
>size =1649
>size =1104
>size =65
>size =65
>size =64
>size =64
>size =65
>size =129
>size =129
>size =3
>size =1646
>size =1101
>
>
>..... and during the deserialzation with :
>
>manager = (Manager)ldapSupport.lookup("dc=manager,dc=example,dc=com" , "cn=topManager");
>
>.. I get the following sized byte arrays read in and then an exception when the 1k boundary is reached ....
>
>Size =80
>Size =48
>Size =48
>Size =48
>Size =256
>Size =256
>Size =27
>Size =65
>Size =65
>Size =64
>Size =65
>Size =-1744521466
>Manager doesn't exist - java.lang.NegativeArraySizeException
>java.lang.NegativeArraySizeException
>       at com.syntactics.admin.common.account.Manager.loadByteArray(Manager.java:348)
>       at com.syntactics.admin.common.account.Manager.readObject(Manager.java:381)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:324)
>       at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:824)
>       at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1746)
>       at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
>       at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
>       at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
>       at com.sun.jndi.ldap.Obj.deserializeObject(Obj.java:511)
>       at com.sun.jndi.ldap.Obj.decodeObject(Obj.java:217)
>       at com.sun.jndi.ldap.LdapCtx.c_lookup(LdapCtx.java:963)
>       at com.sun.jndi.toolkit.ctx.ComponentContext.p_lookup(ComponentContext.java:522)
>       at com.sun.jndi.toolkit.ctx.PartialCompositeContext.lookup(PartialCompositeContext.java:155)
>       at com.sun.jndi.toolkit.ctx.PartialCompositeContext.lookup(PartialCompositeContext.java:144)
>       at javax.naming.InitialContext.lookup(InitialContext.java:347)
>
>
>Note that the serialized object begins with a long value and then every byte array is preceded by an integer specifying the length of the array.
>
>Is this a bug, limitation or goofup on my part?
>
>Cheers
>buzz
>
>_________________________________________________________________
>It's fast, it's easy and it's free. Get MSN Messenger today! http://www.msn.co.uk/messenger