【问题标题】:GWT: How to serialize objectsGWT:如何序列化对象
【发布时间】:2013-07-05 10:54:01
【问题描述】:

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

【问题讨论】:

    标签: gwt servlets serialization


    【解决方案1】:

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

    RPC.decodeRequest(payload, ...) 会给你一个 RPCRequest 对象,其中包括要调用的方法和反序列化的参数。

    RPC.invokeAndEncodeResponse()RPC.encodeResponseForSuccess() 方法的响应进行编码。

    [编辑]

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

    有趣的代码在RemoteServiceProxy 中,查看createStreamWritter 方法,您可以看到如何序列化您的对象。在createStreamReader 中,您可以看到如何反序列化来自服务器的消息。

    【讨论】:

    • 谢谢马诺洛。我必须在客户端使用 SerializationStreamFactory 解码是否正确?如何创建 SerializationStreamFactory 的实例?
    • 编辑了我的回复以包括客户端。
    【解决方案2】:

    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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-18
      • 2011-05-16
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      相关资源
      最近更新 更多