Yes, it is as Victor says, Hibernate uses it's own implementation
around collection classes because it needs to control changes in
containing objects.
I can quite remember, but I think this collections are enhanced using
either reflection or bytecode enhancing (cglib2).
OK, maybe just cloning the collection would do, but if your list has
an internal set, then that set may be a Hibernate enhanced collection
too, in which case you probably need to clone it too.
Just a thought.
On Wed, 19 Jan 2005 09:25:43 -0500, Victor Rodriguez <dorlomin@xxx.com> wrote:
> Hello,
>
> It may be that what you think is being sent is not what is actually
> being sent. Doesn't Hibernate use its own implementation of
> collections under the covers? If it does, it might be fooling Hessian.
> Try putting a few trace messages on the Hessian code, or stepping
> through it.
>
> BR,
>
> Victor Rodriguez.
>
> On Wed, 19 Jan 2005 09:17:44 -0500, Marti, Adrian (Adrian)
> <amarti@xxx.com> wrote:
> > Christian,
> >
> > Thank for the help. I do not use any final attributes in my
> > objects. Here is my object structure maybe that will help.
> >
> > Java.util.List--
> > [0]--Equipment Object (hibernate pojo)
> > --String,String,String
> > --EquipmentKeys ( java.util.Set ) //this is
> > what I nulled
> > [0]-- String,String,String
> > [1]-- String etc
> > [n]-- "
> > [n]--"
> >
> > I return the List through Hessian. Everything is serializable. And I can
> > send a list with capacity 18 before it dies. If I null that inner
> > equipment keys set, I can send many more depending on if I null it every
> > time or every nth time. Any other ideas? I would really hate to stop
> > using Hessian now but I get no warning of this error and have no idea
> > when im reaching the limit. Is there a spec sheet somewhere?
> >
> > Thanks again,
> > Adrian
> >
> > -----Original Message-----
> > From: owner-hessian-interest@xxx.com
> > [mailto:owner-hessian-interest@xxx.com] On Behalf Of Christian Campo
> > Sent: Wednesday, January 19, 2005 2:54 AM
> > To: hessian-interest@xxx.com
> > Subject: Re: Possible Max Size Problem? -repost
> >
> > just a guess.....Do you use fields with the attribute "final" ??
> >
> > On Tue, 18 Jan 2005 12:17:49 -0500, Marti, Adrian (Adrian)
> > <amarti@xxx.com> wrote:
> > > Hello all,
> > >
> > > Hope this comes through ok. I am using Hessian 3.0.8 for Java on 1.4.2
> > jvm with server portion under weblogic 8.1. I am sending back results
> > from a DB query made with hibernate. The return type is a java.list with
> > each entry containing 2 custom serializable pojo's and a few java sets.
> > The issue I am having is that I can send about 18 objects ( list with 20
> > objects, so 20 results from DB call) fine, but then after that I get a
> > strange deserialization exception. ( Posted Below ) . I wasn't sure the
> > cause so I did some tests by nulling out some of the sets that the
> > custom java objects have populated ( to cut some data out, save space )
> > I started by nulling out an internal set on every other object in the
> > working my way up to every 4th object in the list. When I nulled every
> > other I was able to pull 42 objects and every 4th I could pull 24
> > objects. So it seems as though I am hitting some type of size limit with
> > my Hessian query. I tried searching the FAQ, mail history, google etc
> > with no luck. Any ideas?
> > >
> > > Thanks,
> > > Adrian Marti
> > >
> > > Exception -----
> > >
> > > java.lang.IllegalArgumentException
> > > at
> > sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorI
> > mpl.java:63)
> > > at java.lang.reflect.Field.set(Field.java:519)
> > > at
> > com.caucho.hessian.io.JavaDeserializer.readMap(JavaDeserializer.java:129
> > )
> > > at
> > com.caucho.hessian.io.JavaDeserializer.readMap(JavaDeserializer.java:105
> > )
> > > at
> > com.caucho.hessian.io.SerializerFactory.readMap(SerializerFactory.java:2
> > 22)
> > > at
> > com.caucho.hessian.io.HessianInput.readObject(HessianInput.java:1120)
> > > at
> > com.caucho.hessian.io.CollectionDeserializer.readList(CollectionDeserial
> > izer.java:106)
> > > at
> > com.caucho.hessian.io.HessianInput.readObject(HessianInput.java:1011)
> > > at
> > com.caucho.hessian.io.JavaDeserializer.readMap(JavaDeserializer.java:128
> > )
> > > at
> > com.caucho.hessian.io.JavaDeserializer.readMap(JavaDeserializer.java:105
> > )
> > > at
> > com.caucho.hessian.io.SerializerFactory.readMap(SerializerFactory.java:2
> > 22)
> > > at
> > com.caucho.hessian.io.HessianInput.readObject(HessianInput.java:1120)
> > > at
> > com.caucho.hessian.io.CollectionDeserializer.readList(CollectionDeserial
> > izer.java:106)
> > > at
> > com.caucho.hessian.io.HessianInput.readObject(HessianInput.java:1011)
> > > at
> > com.caucho.hessian.io.HessianInput.readReply(HessianInput.java:279)
> > > at
> > com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:184)
> > > at $Proxy2.getEquipmentByGroup(Unknown Source)
> > > at
> > network.tmsClientSession.getEquipment(tmsClientSession.java:2463)
> > > at gui.tmsEquipment.getEquipment(tmsEquipment.java:854)
> > > at gui.tmsEquipment.createChildren(tmsEquipment.java:794)
> > > at gui.tmsEquipment.leftTreeValueChanged(tmsEquipment.java:661)
> > > at gui.tmsEquipment$16.valueChanged(tmsEquipment.java:555)
> > > at javax.swing.JTree.fireValueChanged(JTree.java:2392)
> > > at
> > javax.swing.JTree$TreeSelectionRedirector.valueChanged(JTree.java:2763)
> > > at
> > javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(DefaultTreeS
> > electionModel.java:629)
> > > at
> > javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(DefaultTreeS
> > electionModel.java:1076)
> > > at
> > javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(DefaultTree
> > SelectionModel.java:287)
> > > at
> > javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(DefaultTreeS
> > electionModel.java:170)
> > > at javax.swing.JTree.setSelectionPath(JTree.java:1168)
> > > at
> > javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(BasicTreeUI.java:2
> > 192)
> > > at
> > javax.swing.plaf.basic.BasicTreeUI$MouseHandler.handleSelection(BasicTre
> > eUI.java:2840)
> > > at
> > javax.swing.plaf.basic.BasicTreeUI$MouseHandler.mousePressed(BasicTreeUI
> > .java:2801)
> > > at
> > java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:222)
> > > at java.awt.Component.processMouseEvent(Component.java:5097)
> > > at java.awt.Component.processEvent(Component.java:4897)
> > > at java.awt.Container.processEvent(Container.java:1569)
> > > at java.awt.Component.dispatchEventImpl(Component.java:3615)
> > > at java.awt.Container.dispatchEventImpl(Container.java:1627)
> > > at java.awt.Component.dispatchEvent(Component.java:3477)
> > > at
> > java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
> > > at
> > java.awt.LightweightDispatcher.processMouseEvent(Container.java:3195)
> > > at
> > java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
> > > at java.awt.Container.dispatchEventImpl(Container.java:1613)
> > > at java.awt.Window.dispatchEventImpl(Window.java:1606)
> > > at java.awt.Component.dispatchEvent(Component.java:3477)
> > > at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
> > > at
> > java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThrea
> > d.java:201)
> > > at
> > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.
> > java:151)
> > > at
> > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
> > > at
> > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
> > > at
> > java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
> > > java.lang.reflect.UndeclaredThrowableException
> > > at $Proxy2.getEquipmentByGroup(Unknown Source)
> > > at
> > network.tmsClientSession.getEquipment(tmsClientSession.java:2463)
> > > at gui.tmsEquipment.getEquipment(tmsEquipment.java:854)
> > > at gui.tmsEquipment.createChildren(tmsEquipment.java:794)
> > > at gui.tmsEquipment.leftTreeValueChanged(tmsEquipment.java:661)
> > > at gui.tmsEquipment$16.valueChanged(tmsEquipment.java:555)
> > > at javax.swing.JTree.fireValueChanged(JTree.java:2392)
> > > at
> > javax.swing.JTree$TreeSelectionRedirector.valueChanged(JTree.java:2763)
> > > at
> > javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(DefaultTreeS
> > electionModel.java:629)
> > > at
> > javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(DefaultTreeS
> > electionModel.java:1076)
> > > at
> > javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(DefaultTree
> > SelectionModel.java:287)
> > > at
> > javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(DefaultTreeS
> > electionModel.java:170)
> > > at javax.swing.JTree.setSelectionPath(JTree.java:1168)
> > > at
> > javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(BasicTreeUI.java:2
> > 192)
> > > at
> > javax.swing.plaf.basic.BasicTreeUI$MouseHandler.handleSelection(BasicTre
> > eUI.java:2840)
> > > at
> > javax.swing.plaf.basic.BasicTreeUI$MouseHandler.mousePressed(BasicTreeUI
> > .java:2801)
> > > at
> > java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:222)
> > > at java.awt.Component.processMouseEvent(Component.java:5097)
> > > at java.awt.Component.processEvent(Component.java:4897)
> > > at java.awt.Container.processEvent(Container.java:1569)
> > > at java.awt.Component.dispatchEventImpl(Component.java:3615)
> > > at java.awt.Container.dispatchEventImpl(Container.java:1627)
> > > at java.awt.Component.dispatchEvent(Component.java:3477)
> > > at
> > java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
> > > at
> > java.awt.LightweightDispatcher.processMouseEvent(Container.java:3195)
> > > at
> > java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
> > > at java.awt.Container.dispatchEventImpl(Container.java:1613)
> > > at java.awt.Window.dispatchEventImpl(Window.java:1606)
> > > at java.awt.Component.dispatchEvent(Component.java:3477)
> > > at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
> > > at
> > java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThrea
> > d.java:201)
> > > at
> > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.
> > java:151)
> > > at
> > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
> > > at
> > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
> > > at
> > java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
> > > Caused by: java.io.IOException: java.lang.IllegalArgumentException
> > > at
> > com.caucho.hessian.io.JavaDeserializer.readMap(JavaDeserializer.java:148
> > )
> > > at
> > com.caucho.hessian.io.JavaDeserializer.readMap(JavaDeserializer.java:105
> > )
> > > at
> > com.caucho.hessian.io.SerializerFactory.readMap(SerializerFactory.java:2
> > 22)
> > > at
> > com.caucho.hessian.io.HessianInput.readObject(HessianInput.java:1120)
> > > at
> > com.caucho.hessian.io.CollectionDeserializer.readList(CollectionDeserial
> > izer.java:106)
> > > at
> > com.caucho.hessian.io.HessianInput.readObject(HessianInput.java:1011)
> > > at
> > com.caucho.hessian.io.JavaDeserializer.readMap(JavaDeserializer.java:128
> > )
> > > at
> > com.caucho.hessian.io.JavaDeserializer.readMap(JavaDeserializer.java:105
> > )
> > > at
> > com.caucho.hessian.io.SerializerFactory.readMap(SerializerFactory.java:2
> > 22)
> > > at
> > com.caucho.hessian.io.HessianInput.readObject(HessianInput.java:1120)
> > > at
> > com.caucho.hessian.io.CollectionDeserializer.readList(CollectionDeserial
> > izer.java:106)
> > > at
> > com.caucho.hessian.io.HessianInput.readObject(HessianInput.java:1011)
> > > at
> > com.caucho.hessian.io.HessianInput.readReply(HessianInput.java:279)
> > > at
> > com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:184)
> > > ... 35 more
> > >
> > >
> > > Adrian Marti | Software Developer
> > > amarti@xxx.com
> > >
> > >
> >
> > --
> > christian campo (gmail.com)
> >
> >
>
Received on Wed 19 Jan 2005 06:35:43 -0800
This archive was generated by hypermail 2.1.8 : Thu Sep 28 2006 - 20:16:40 PDT