我需要在JDBC
中序列化未知类型的对象(仅GWT
类型)。我有一个对象,其中包含未知的“jdbc”对象列表,我需要将其从客户端转移到服务器并返回。如果此对象序列化为不在gwt客户端环境中的文件,我可以将这些未知对象保存在Object
列表中。但GWT无法序列化Object
类型的对象。我怎样才能做到这一点?任何建议
答案 0 :(得分:4)
如果您的任何其他RPC方法没有返回这些jdbc类型,则可能会遇到问题。
例如,如果您的类Foo没有通过RPC返回List [Object]之外的任何方法发送,那么GWT在编译时(生成RPC白名单时)不知道Foo是一个应该生成序列化代码的类。这对生成的JavaScript特别有意义,因为避免代码膨胀来自未使用的类型很重要。
您可以通过在通过RPC发送的虚拟类中手动添加其他未引用的类(来自JDBC的所有可能的返回类型)来解决此问题。 How do I add a type to GWT's Serialization Policy whitelist?
或者,您可以编写一个自定义RemoteService生成器来添加类型,而不需要Dummy类。 http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsDeferred.html#generator
答案 1 :(得分:2)
您可以将其作为
返回List<Serializable> serviceMethod();
如果您保证它们都是Serializable。在从服务方法返回之前,只需将它们全部转换为Serializable。
答案 2 :(得分:0)
请参阅GWT JRE Emulation Reference,没有Object
类,GWT无法对其进行序列化,因此您应该创建自己的传输对象,该对象实现IsSerializable标记接口。
简而言之,RPC无法序列化java.lang.Object
。检查此链接:
GWT Sending type OBJECT Via RPC和好线程:
Serialize object和Why is GWT serialization so complicated?