0

シリアライズ可能なJavaクラス構成があります。

タイプ string,Document (org.w3c.dom.Document) のデータを含む構成のインスタンスを作成し、それをタイプ BLOB の Db に保存したいと考えています。

しかし、それを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(); 

最初にバイト配列に変換してから保存しています。

誰でもこの問題から抜け出すのを手伝ってもらえますか..

4

2 に答える 2

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

これは、DOMElementImplクラスが としてマークされていないことを示していSerializableます。Configurationクラスは を実装していますが、クラスSerializable内のすべてのフィールドも同様に実装する必要があります。そこDocumentが問題の分野だと思います。このシリアライゼーション チュートリアルから引用するには:

クラスが正常にシリアライズされるためには、次の 2 つの条件が満たされている必要があることに注意してください。

  • クラスは java.io.Serializable インターフェースを実装する必要があります。

  • クラス内のすべてのフィールドはシリアライズ可能である必要があります。フィールドがシリアライズ可能でない場合は、transient とマークする必要があります。

DOMElementImplクラスを見ると、実装されていますSerializable。これをデータベースにシリアル化する必要がある場合は、データベースに保存する前に別のクラスにエクスポートする必要があります。

于 2012-09-05T13:34:11.117 に答える
0

Kryoでこれらのシリアライゼーションの問題を回避したい場合があります

于 2012-09-05T13:46:16.103 に答える