5

JAXB への呼び出しを高速化する方法はありますMarshaller.marshal(Object, OutputStream)か?

私が取り組んでいるプロジェクトでは、JAXB を使用して、かなり大きな XML スキーマを持つオブジェクトを [非] 整列化しています。呼び出しsomeJaxbMarshaller.marshal(results, out)が完了するまでに 2 秒かかります。他のすべて (JPA フェッチ、空間フィルタリング、その他のかなりのロジック) は約 1 秒しかかかりません。したがって、JAXB を使用すると、リクエストの応答時間が 3 倍になります。可能な限り高速化するために、JAXBContext オブジェクトと Marshaller オブジェクトをキャッシュしています。私を遅くしているのは、実際のマーシャリングだけです。助言がありますか?

JAX-WS 2.2.3にバンドルされているJAXB 2.2.3u1を使用しています。新しいバージョンでは複数のことが壊れているように見えるため、そのバージョンの JAXB にロックされています ( JAXB 2.2.4u1を使用する Java に含まれるJAX-WS 2.2.5をオーバーライドします。これは、ロード時にスローされるため使用できません)。)。また、JDK 1.3.0_30を使用しており、これはEclipse Indigoで実行されています。Woodstox を使用するという提案を見ましたが、JAX-WS 2.2.3には既に含まれています。最新バージョンに交換してみましたが、マーシャリングが約 0.2 秒遅くなりました。Woodstox を削除すると、JAX-WS に含まれるバージョンを使用した場合とまったく同じパフォーマンスが得られました。NullPointerException

マーシャリングされるオブジェクトをサポートするスキーマのサイズは約5 MBです。JAXB が生成する実際の XML ドキュメントのサイズは117 KBです。

4

0 に答える 0