現在の SAX パーサーは、ログによると、SOAP サーバーからの応答を逆シリアル化するために、多くの時間 (20 分) とヒープ メモリ (約 400 MB) を必要とします。応答 XML の平均サイズは 4 MB です。
ヒープ外でアプリケーションを実行したときのログの一部を以下に示します。
DEBUG (org.apache.axis.encoding.DeserializationContext) Pushing handler org.apache.axis.message.SOAPHandler@16d22f1
DEBUG (org.apache.axis.i18n.ProjectResourceBundle) org.apache.axis.i18n.resource::handleGetObject(newElem00)
DEBUG (org.apache.axis.message.MessageElement) New MessageElement (org.apache.axis.message.MessageElement@112c22) named {}name
DEBUG (org.apache.axis.encoding.DeserializationContext) Pushing element name
DEBUG (org.apache.axis.utils.NSStack) NSPush (32)
DEBUG (org.apache.axis.encoding.DeserializationContext) Exit: DeserializationContext::startElement()
DEBUG (org.apache.axis.encoding.DeserializationContext) Enter: DeserializationContext::endElement(, name)
DEBUG (org.apache.axis.i18n.ProjectResourceBundle) org.apache.axis.i18n.resource::handleGetObject(popHandler00)
DEBUG (org.apache.axis.encoding.DeserializationContext) Popping handler org.apache.axis.message.SOAPHandler@16d22f1
DEBUG (org.apache.axis.utils.NSStack) NSPop (32)
DEBUG (org.apache.axis.encoding.DeserializationContext) Popped element stack to org.apache.axis.message.MessageElement:property
DEBUG (org.apache.axis.encoding.DeserializationContext) Exit: DeserializationContext::endElement()
DEBUG (org.apache.axis.encoding.DeserializationContext) Enter: DeserializationContext::startElement(, value)
DEBUG (org.apache.axis.i18n.ProjectResourceBundle) org.apache.axis.i18n.resource::handleGetObject(pushHandler00)
DEBUG (org.apache.axis.encoding.DeserializationContext) Pushing handler org.apache.axis.message.SOAPHandler@16880ba
DEBUG (org.apache.axis.i18n.ProjectResourceBundle) org.apache.axis.i18n.resource::handleGetObject(newElem00)
DEBUG (org.apache.axis.message.MessageElement) New MessageElement (org.apache.axis.message.MessageElement@1db74af) named {}value
DEBUG (org.apache.axis.encoding.DeserializationContext) Pushing element value
DEBUG (org.apache.axis.utils.NSStack) NSPush (32)
DEBUG (org.apache.axis.encoding.DeserializationContext) Exit: DeserializationContext::startElement()
DEBUG (org.apache.axis.encoding.DeserializationContext) Enter: DeserializationContext::endElement(, value)
DEBUG (org.apache.axis.i18n.ProjectResourceBundle) org.apache.axis.i18n.resource::handleGetObject(popHandler00)
DEBUG (org.apache.axis.encoding.DeserializationContext) Popping handler org.apache.axis.message.SOAPHandler@16880ba
DEBUG (org.apache.axis.utils.NSStack) NSPop (32)
技術的な理由により、Axis2 を使用できません。
HTTP クライアントの代わりに HTTP Commons クライアントを使用してみましたが、応答時間は変わりません。
このコンテキストで別のパーサー (xerces 2.10.0 や xstream 1.3.1 など) を Axis 1.4 フレームワークにリンクして、メモリ管理と応答時間が適切になるようにするにはどうすればよいですか?