如何在java中序列化Jdbc4SQLXML类

如何在java中序列化Jdbc4SQLXML类,java,postgresql-9.1,Java,Postgresql 9.1,我只是想知道我们如何“序列化”这个Jdbc4SQLXML类,它是根据postgres API扩展java.lang.Object并实现java.sql.SQLXML。甚至SQLXML接口也没有扩展可序列化接口 我这么做的原因是,我当时试图从其他JVM获取一个对象,但我得到了这个异常。 java.io.NotSerializableException:org.postgresql.jdbc4.Jdbc4SQLXML 这里SQLXML是我的返回类型 提前感谢。如果类未实现可序列化,则无法通过常规ap

我只是想知道我们如何“序列化”这个
Jdbc4SQLXML
类,它是根据postgres API扩展
java.lang.Object
并实现
java.sql.SQLXML
。甚至SQLXML接口也没有扩展可序列化接口

我这么做的原因是,我当时试图从其他JVM获取一个对象,但我得到了这个异常。
java.io.NotSerializableException:org.postgresql.jdbc4.Jdbc4SQLXM
L

这里SQLXML是我的返回类型


提前感谢。

如果类未实现可序列化,则无法通过常规api发送。您可以使用自己的序列化程序(使用getter/setter或Java反射进入其他非公共字段);然后通过web服务器发送字符串,并在另一端执行相反的操作。基本上是您自己的序列化。但是也有一些包可以提供帮助,比如Java7也有内置的帮助程序

重要的问题可能是为什么要这样做?如果Jvm 1中打开了一些资源,那么Jvm 2中的这个对象可能会失败

为什么不制作自己的POJO并使用它重新创建对象


如果此第三方对象中发生了不打算序列化的更改,这将在将来的版本中提供保护。

Jdbc4SQLXML
不可序列化,因为它实现的接口不可序列化,规范不需要它。这有一个很好的理由:JDBC的SQL/XML支持被允许是“惰性的”,其中SQL/XML结果的JDBC对象实际上只是指向数据库中数据的指针,它是按需获取的。这也是resultset关闭后result对象无效的原因

因此,虽然PgJDBC可以使该对象可序列化,因为它不会延迟加载,但这意味着我们以后再也不能将其更改为延迟加载

如果要序列化XML,请使用标准SQL/XML方法从结果对象读取XML并序列化结果XML。不要试图直接序列化JDBC结果对象

看。您将看到如何从结果对象获取
文档<代码>文档
可序列化