在GWT中序列化JDBC类型

时间:2012-02-20 22:16:00

标签: gwt jdbc

我需要在JDBC中序列化未知类型的对象(仅GWT类型)。我有一个对象,其中包含未知的“jdbc”对象列表,我需要将其从客户端转移到服务器并返回。如果此对象序列化为不在gwt客户端环境中的文件,我可以将这些未知对象保存在Object列表中。但GWT无法序列化Object类型的对象。我怎样才能做到这一点?任何建议

3 个答案:

答案 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 objectWhy is GWT serialization so complicated?