2017-02-27 6 views
0

私は既存のアプリケーションの起動パフォーマンスを改善しようとしています。 このアプリケーションは現在、別の8つのアプリケーションにサービスコールを行っています。したがって、WebServiceGatewaySupportを拡張する8つのサービスBeanがあります。これらのサービスBeanはそれぞれ独自のSaajSoapMessageFactoryインスタンスを持ちます。複数のWebServiceTemplateとSaajSoapMessageFactoryのパフォーマンス

<bean id="serviceBean" class="com.test.ServiceBeanA" scope="prototype" 
     p:marshaller-ref="marshaller" 
     p:unmarshaller-ref="marshaller" 
     p:defaultUri="${service.endpoint}" 
     p:messageSender-ref="messageSender"> 
    <constructor-arg ref="**messageFactoryD**"/> 

</bean> 

私はすべての私のサービス豆のためのMessageFactoryのインスタンスを1つだけ使用することができた場合、これが必要であるか、あればと思いまして。私はメッセージ処理のブロックについて心配する必要があるかどうかはわかりません。 私がこれを検討する理由は、SaajMessageFactory "SAAJ 1.3 MessageFactoryの作成"を起動するたびに数秒かかるためです。

同様に、サービスBeanごとに1つのJaxb2Marshallerインスタンスもあります。 Jaxb2Marshallerのインスタンスのみをすべて使用し、コンテキストパスを結合することはできますか。

答えて

0

SAAJメッセージファクトリとJAXBコンテキストは不変でスレッドセーフなので、すべてのサービスBeanで同じインスタンスを使用できない理由はありません。 SAAJメッセージファクトリの作成にはかなりの時間がかかります。一方、JAXBコンテキストの作成は、クラスの数に応じて、重くなる可能性があります。

+0

ありがとうございました。 marshallerとSAAJメッセージファクトリの1つのインスタンスに切り替えるだけで、実行時のパフォーマンスを心配する必要はありますか? – Oboluse

+0

これは、これが実行時のパフォーマンスに影響を及ぼす理由はありません。 –

関連する問題