GWT RPC序列化

时间:2012-04-17 17:27:47

标签: gwt serialization rpc

我正在尝试通过RPC发送MyClass,但我得到: 类型MyClass无法分配给“com.google.gwt.user.client.rpc.IsSerializable”,并且没有自定义字段序列化程序。出于安全考虑,此类型不会被序列化。

我查看了GWT - occasional com.google.gwt.user.client.rpc.SerializationException并尝试了他们的解决方案,但它没有用。

不同之处在于MyClass位于另一个项目中。 项目结构是:

MyApiProject
-contains MyClass
MyClientProject
MyServerProject

我还试过从MyApiProject传递一个枚举通过RPC,这也失败了。

public class MyClass
    implements Serializable
{
    private static final long serialVersionUID = 5258129039653904120L;

    private String str;

    private MyClass()
    {
    }

    public MyClass(String str)
    {
        this.str = str;
    }

    public String getString()
    {
        return this.str;
    }
}
我在RemoteService中的

mypackage.MyClass getMyClass();
我在RemoteServiceAsync中的

void getMyClass(AsyncCallback<mypackage.MyClass> callback);

3 个答案:

答案 0 :(得分:6)

我必须更改实现Serializable以实现IsSerializable

答案 1 :(得分:0)

当您在类中使用不可序列化的其他类型时,通常会弹出。检查你的类的属性,并确保它们都是可序列化的,在这里发布MyClass的代码,我也可以查看它。

答案 2 :(得分:0)

我相信GWT要求RPC可序列化类也有一个公共的无参数构造函数。

尝试删除

   private MyClass()
    {
    }

或将其设置为

   public MyClass()
    {
    }