标签: gwt-syncproxy

GWT和Android通信.枚举序列化问题

我有一个完美的GWT应用程序.现在我试图用来gwt-syncproxy创建一个Android客户端,它可以简单地重用服务器端代码.

到目前为止一切都很完美.我能找到的唯一问题是当我将RPC启动到期望枚举作为参数的方法时.

枚举看起来像这样:

import java.io.Serializable;
import com.google.gwt.user.client.rpc.IsSerializable;

public enum ReferenceTable implements IsSerializable, Serializable
{
    basetable, othertable;

    ReferenceTable(){}
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误信息是:

com.google.gwt.user.client.rcp.IncompatibleRemoteServiceException: Invalid type signature for package.ReferenceTable
Run Code Online (Sandbox Code Playgroud)

这表明这是一个与序列化有关的问题.

我尝试使用和的不同组合,IsSerializableSerializable在部署之前始终清理项目.GWT应用程序和Android应用程序对用于通信的数据类型使用相同的代码.

有谁知道如何解决这个问题?如果没有别的办法,我可以使用枚举不要,但我宁愿使用它们.特别是,因为一切都在为GWT服务器 - 客户端通信本身工作.


BTW:服务器端的错误是:

Caused by: com.google.gwt.user.client.rpc.SerializationException: Invalid type signature for some.package.ReferenceTable
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.validateTypeVersions(ServerSerializationStreamReader.java:1116)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserialize(ServerSerializationStreamReader.java:610)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.readObject(ServerSerializationStreamReader.java:567)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader$ValueReader$8.readValue(ServerSerializationStreamReader.java:140)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamReader.deserializeValue(ServerSerializationStreamReader.java:425)
    at com.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:312)
    ... 24 more
Run Code Online (Sandbox Code Playgroud)

编辑:

我创建了一个示例GWT应用程序和一个示例Android应用程序,因此人们可以实际尝试代码:

要部署应用程序,只需修改build.properties文件,然后build.xml作为ant脚本运行.在MainActivityAndroid应用程序中,修改URL以指向GWT应用程序.

java gwt enums android gwt-syncproxy

6
推荐指数
1
解决办法
1335
查看次数

标签 统计

android ×1

enums ×1

gwt ×1

gwt-syncproxy ×1

java ×1