什么反序列化 GWT RPC 调用客户端

Posted

技术标签:

【中文标题】什么反序列化 GWT RPC 调用客户端【英文标题】:What deserializes GWT RPC calls client side 【发布时间】:2014-11-23 15:42:31 【问题描述】:

据我了解,在我的 GWT 项目中,RemoteServiceServlet 在服务器端反序列化和序列化传入和传出数据。

但是客户端呢?我的 serviceAsync 类(我想它接收来自 RemoteServiceServlet 的响应)没有扩展任何东西。

【问题讨论】:

【参考方案1】:

查看有关 RPC 管道的部分(图中的绿色框):

http://www.gwtproject.org/doc/latest/DevGuideServerCommunication.html

其中一些类(例如服务代理)是在后台自动生成的,您通常不会意识到它们的存在。

【讨论】:

所以它是使用 ".. = GWT.create(YourService.class)" 创建的服务代理类?【参考方案2】:

您可以在 com.google.gwt.user.client.rpc.core 包下的 GWT 用户代码 (gwt-user.jar) 中找到 Java 类型的反序列化工具代码

https://github.com/gwtproject/gwt/tree/46173a7c2511d1156d56fd564717fe6f7cf4a97e/user/src/com/google/gwt/user/client/rpc/core/java

示例 - com.google.gwt.user.client.rpc.core.java.lang

Boolean_CustomFieldSerializer.java
Byte_CustomFieldSerializer.java
Character_CustomFieldSerializer.java
Double_CustomFieldSerializer.java
Float_CustomFieldSerializer.java
Integer_CustomFieldSerializer.java
Long_CustomFieldSerializer.java
Object_Array_CustomFieldSerializer.java
Short_CustomFieldSerializer.java
StackTraceElement_CustomFieldSerializer.java
String_CustomFieldSerializer.java
Void_CustomFieldSerializer.java

对于扩展 GWT IsSerializable 或 Serializable 的自定义代码,GWT 在编译期间会生成类似的 FieldSerializer 类。

【讨论】:

所以这些类处理通过网络从客户端发送到服务器端的数据的序列化和反序列化,而不是服务代理类?【参考方案3】:

这由 GWT 处理。您只需要确保您的 DTO 是可序列化的。

【讨论】:

以上是关于什么反序列化 GWT RPC 调用客户端的主要内容,如果未能解决你的问题,请参考以下文章

GWT JPA - 无法反序列化响应

使用 GWT 内置的 RPC 序列化/反序列化机制

出于调试目的从 GWT RPC 有效负载中反序列化日期和时间戳

GWT:响应无法反序列化

使用 GWT RPC 序列化在 POST 中将对象从客户端发送到服务器

打开新页面,反序列化 GWT 中的对象