GWT:如何序列化对象

时间:2013-07-05 10:54:02

标签: gwt servlets serialization

我想知道是否可以使用GWT的序列化器。当使用GWT的rpc-mechnism时,GWT序列化客户端上的对象并反序列化服务器上​​的对象。对于此机制,您必须使用GWT的特殊servlet(RemoteServiceServlet)。但我想使用普通的HttpServlets,因此我必须自己序列化和反序列化对象。

2 个答案:

答案 0 :(得分:3)

您需要查看的所有代码都在RemoteServiceServlet.java中。专注于processCall方法。

RPC.decodeRequest(payload, ...)将为您提供一个RPCRequest对象,其中包括要调用的方法和反序列化的参数。

将响应焦点编码为RPC.invokeAndEncodeResponse()RPC.encodeResponseForSuccess()方法。

[EDITED]

在客户端,值得查看RPC生成器生成的代理类,具体来说是YourService_Proxy.java文件。编译项目后,生成的文件将保留在项目文件夹结构的某个位置(尽管如此,您可以使用-gen指示此文件夹。)

有趣的代码位于RemoteServiceProxy,查看createStreamWritter方法,您可以看到如何序列化对象。在createStreamReader中,您可以看到如何从服务器反序列化邮件。

答案 1 :(得分:0)

请参阅gwt-byte-serializer

SerializerInt ser = new Serializer();
ser.writeValue("test");
ser.writeValue(new int[]{5,1,6});

String buffer = ser.getBuffer();

SerializerInt des = new Serializer(buffer);

des.readString()
des.readIntegerArr()