We have migrated GWT version from 2.1.0 to 2.9.0 And since that upgrade one of the GWT RPC is failing with the SerializaedTypeViolationException Following is the caused by stack trace. I searched for this error And I found solutions like 1)To implement no arguments constructor if missing for the Type parameter 2) implement isSerializable or Serializable interface. I have done that by creating the following custom class as follows and used that in request but still no luck..

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import com.google.gwt.user.client.rpc.IsSerializable;

/**
 * This class is an implmentation for an ordered Map.
 */
public class CustomMap implements Map, IsSerializable, Serializable
{
    private ArrayList key;
    private ArrayList value;
     
    public CustomMap ()
    {
        this.key = new ArrayList();
        this.value = new ArrayList();
    }
    
    public CustomMap (int size)
    {
        this.key = new ArrayList(size);
        this.value = new ArrayList(size);
    }

Please guide me with following issue fix if anyone has faced the same and resolved it.

Caused by: com.google.gwt.user.client.rpc.SerializedTypeViolationException: Attempt to deserialize an object of type class java.util.HashMap when an object of type class java.lang.String is expected
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize(ServerSerializationStreamReader.java:663)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.readObject(ServerSerializationStreamReader.java:592)
    at com.google.gwt.user.server.rpc.core.java.util.Map_ServerCustomFieldSerializerBase.deserialize(Map_ServerCustomFieldSerializerBase.java:38)
    at com.google.gwt.user.server.rpc.core.java.util.HashMap_ServerCustomFieldSerializer.deserialize(HashMap_ServerCustomFieldSerializer.java:40)
    at com.google.gwt.user.server.rpc.core.java.util.HashMap_ServerCustomFieldSerializer.deserializeInstance(HashMap_ServerCustomFieldSerializer.java:54)
    at com.google.gwt.user.server.rpc.core.java.util.HashMap_ServerCustomFieldSerializer.deserializeInstance(HashMap_ServerCustomFieldSerializer.java:33)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeImpl(ServerSerializationStreamReader.java:887)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize(ServerSerializationStreamReader.java:687)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.readObject(ServerSerializationStreamReader.java:592)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader$ValueReader$8.readValue(ServerSerializationStreamReader.java:149)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeValue(ServerSerializationStreamReader.java:434)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeClass(ServerSerializationStreamReader.java:833)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeImpl(ServerSerializationStreamReader.java:906)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize(ServerSerializationStreamReader.java:687)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.readObject(ServerSerializationStreamReader.java:592)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader$ValueReader$8.readValue(ServerSerializationStreamReader.java:149)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeValue(ServerSerializationStreamReader.java:434)
    at com.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:312)
    ... 116 more

I am initiating a GWT RPC call, where there is one of the property sent with the object passed in the payload, is of type java.util.HashMap for which the request is failing with "IncompatibleRemoteServiceException" while decoding the request only at the server when initiated the following line.

rpcRequest = RPC.decodeRequest(payload, this.getClass(), this);

And this exception is "Caused by: com.google.gwt.user.client.rpc.SerializedTypeViolationException: Attempt to deserialize an object of type class java.util.HashMap when an object of type class java.lang.String is expected"

Any help is appreciated. Thanks in advance.

0

There are 0 best solutions below