1

大きなxmlを生成する必要があります。現在、JAXB2.0を使用しています。

問題は、すべてのオブジェクトをメモリに保持し、ヒープスペースが不足する可能性が非常に高い場合です。

これを行うための最良のアプローチを知りたいです。

ありがとう

4

2 に答える 2

2

StAXを使用してXMLの外部本体をマーシャリングし、次にJAXBを使用して、すべてをメモリに保持しなくても、繰り返されるオブジェクトをマーシャリングできます。

このスレッドを参照してください:http://glassfish.10926.n7.nabble.com/Marshalling-Large-data-into-xml-td55636.html

于 2012-05-14T15:12:53.400 に答える
0

次のことをお勧めします。

XMLをどのように作成しますか?まず、オブジェクトグラフを作成します。つまり、すべてのオブジェクトとそれらの間の依存関係を作成します。次に、次のように呼び出します。

JAXBContext.newInstance("YOUR PACKAGES LIST").marshal(rootObject, out);

JAXBは、Beanとして、つまりゲッターを使用してオブジェクトにアクセスします。したがって、マーシャリングの前に完全なオブジェクトグラフを作成する必要はありません。ゲッターのオンデマンド実装を提供するだけで、リクエストに応じてオブジェクトを取得できるようになります。メモリ消費量を減らすのに役立つと思います。

このオンデマンドメカニズムをクラス内に実装したくない場合は、AspectJまたは他のアスペクト指向ライブラリ(またはcglibやjavassistなどの直接バイトコード変更ライブラリ)を使用して、オンデマンド取得コードをモデルオブジェクトに挿入できます。

于 2012-05-14T13:35:02.327 に答える