Hi Bob,

during my RPCServlet - tests I found another issuer with the
serialization and dezerialization of certain objects. When trying to
send the attached object to the client, the rpc-mechanism leads to
some kind of endless loop and ends with the following exception.

 [java] java.lang.reflect.InvocationTargetException
     [java]     at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown
Source)
     [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke
(Unknown Source)
     [java]     at java.lang.reflect.Method.invoke(Unknown Source)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.serializeWithCustomSerializer
(CommandServerSerializationStreamWriter.java:213)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeObject
(CommandServerSerializationStreamWriter.java:146)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeValue
(CommandServerSerializationStreamWriter.java:92)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeObject
(CommandServerSerializationStreamWriter.java:179)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeValue
(CommandServerSerializationStreamWriter.java:92)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeObject
(CommandServerSerializationStreamWriter.java:179)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeValue
(CommandServerSerializationStreamWriter.java:92)
     [java]     at
com.google.gwt.rpc.client.impl.CommandSerializationStreamWriterBase.writeObject
(CommandSerializationStreamWriterBase.java:64)
     [java]     at
com.google.gwt.user.client.rpc.core.java.util.Collection_CustomFieldSerializerBase.serialize
(Collection_CustomFieldSerializerBase.java:44)
     [java]     at
com.google.gwt.user.client.rpc.core.java.util.ArrayList_CustomFieldSerializer.serialize
(ArrayList_CustomFieldSerializer.java:36)
     [java]     at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown
Source)
     [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke
(Unknown Source)
     [java]     at java.lang.reflect.Method.invoke(Unknown Source)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.serializeWithCustomSerializer
(CommandServerSerializationStreamWriter.java:213)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeObject
(CommandServerSerializationStreamWriter.java:146)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeValue
(CommandServerSerializationStreamWriter.java:92)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeObject
(CommandServerSerializationStreamWriter.java:179)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeValue
(CommandServerSerializationStreamWriter.java:92)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeObject
(CommandServerSerializationStreamWriter.java:179)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeValue
(CommandServerSerializationStreamWriter.java:92)
     [java]     at
com.google.gwt.rpc.client.impl.CommandSerializationStreamWriterBase.writeObject
(CommandSerializationStreamWriterBase.java:64)
     [java]     at
com.google.gwt.user.client.rpc.core.java.util.Collection_CustomFieldSerializerBase.serialize
(Collection_CustomFieldSerializerBase.java:44)
     [java]     at
com.google.gwt.user.client.rpc.core.java.util.ArrayList_CustomFieldSerializer.serialize
(ArrayList_CustomFieldSerializer.java:36)
     [java]     at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown
Source)
     [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke
(Unknown Source)
     [java]     at java.lang.reflect.Method.invoke(Unknown Source)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.serializeWithCustomSerializer
(CommandServerSerializationStreamWriter.java:213)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeObject
(CommandServerSerializationStreamWriter.java:146)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeValue
(CommandServerSerializationStreamWriter.java:92)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeObject
(CommandServerSerializationStreamWriter.java:179)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeValue
(CommandServerSerializationStreamWriter.java:92)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeObject
(CommandServerSerializationStreamWriter.java:179)
     [java]     at
com.google.gwt.rpc.server.CommandServerSerializationStreamWriter.makeValue
(CommandServerSerializationStreamWriter.java:92)
     [java]     at
com.google.gwt.rpc.client.impl.CommandSerializationStreamWriterBase.writeObject
(CommandSerializationStreamWriterBase.java:64)
     [java]     at
com.google.gwt.user.client.rpc.core.java.util.Collection_CustomFieldSerializerBase.serialize
(Collection_CustomFieldSerializerBase.java:44)
     [java]     at
com.google.gwt.user.client.rpc.core.java.util.ArrayList_CustomFieldSerializer.serialize
(ArrayList_CustomFieldSerializer.java:36)
     [java]     at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown
Source)
     [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke
(Unknown Source)
     [java]     at java.lang.reflect.Method.invoke(Unknown Source)
.....

I tried to transport some kind of a tree object:

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class SerializableObject implements Serializable {

  private static final long serialVersionUID = 289043616337394794L;

  protected List<SerializableObject> children;
  protected SerializableObject parent;

  public SerializableObject() {
    children = new ArrayList<SerializableObject>();
  }

  public void setParent(SerializableObject parent) {
    this.parent = parent;
  }

  public void add(SerializableObject child) {
    child.setParent(this);
    children.add(child);
  }

}

The server method looks quite simple:


  public SerializableObject getSerializableObject() {

    SerializableObject object = new SerializableObject();

    object.add(new SerializableObject());

    return object;

  }

Can you help me with that?

Regards,
Mark
--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to