保存序列化java对象到Db时出现问题

时间:2012-09-05 13:08:27

标签: java dom serialization

我有可以序列化的Java类配置。

我想创建一个配置实例,其中包含string类型的数据,Document(org.w3c.dom.Document)并将其保存到BLb类型的Db中。

但是当我要将它保存到数据库中时,它会抛出异常:

java.io.NotSerializableException: org.w3c.tidy.DOMElementImpl

我的配置类是:

public class Configuration extends Tag implements Serializable{

    private Document doc = null ;
    private String checkpoint=null; 

}

将配置对象保存到DB时,我使用了以下代码:

ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(bos);   
out.writeObject(configuration);
byte[] confBytes = bos.toByteArray(); 

我首先将其转换为字节数组,然后保存。

任何人都可以帮助我摆脱这个问题..

2 个答案:

答案 0 :(得分:2)

java.io.NotSerializableException: org.w3c.tidy.DOMElementImpl

这表示DOMElementImpl类未标记为Serializable。即使您的Configuration类实现Serializable,您班级中的所有字段也需要这样做。我假设Document是问题的字段。引用this serialization tutorial

  

请注意,要成功序列化的类,必须满足两个条件:

     
      
  • 该类必须实现java.io.Serializable接口。

  •   
  • 类中的所有字段都必须是可序列化的。如果字段不可序列化,则必须将其标记为瞬态。

  •   

查看DOMElementImpl class,它确实实现了Serializable。如果需要将其序列化到数据库,则需要在存储到数据库之前将其导出到另一个类。

答案 1 :(得分:0)

您可能希望使用Kryo

绕过这些序列化问题