Многократная производительность WebServiceTemplate и SaajSoapMessageFactory
Я пытаюсь улучшить производительность запуска существующего приложения. В настоящее время это приложение выполняет сервисные вызовы для других 8 приложений, поэтому существует 8 сервисных компонентов, расширяющих WebServiceGatewaySupport. Каждый из этих служебных компонентов имеет свой собственный экземпляр 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 для всех моих служебных компонентов. Я не уверен, что мне нужно беспокоиться о блокировке при обработке сообщений. Причина, по которой я рассматриваю это как начало, состоит в том, что на каждый запуск SaajMessageFactory "Создание SAAJ 1.3 MessageFactory .." уходит несколько секунд.
На аналогичном замечании есть также один экземпляр Jaxb2Marshaller для каждого служебного компонента. Могу ли я использовать только экземпляр Jaxb2Marshaller для всех и комбинировать пути контекста.
1 ответ
Фабрики сообщений SAAJ и контексты JAXB являются неизменяемыми и поточно-ориентированными, поэтому нет причин, по которым вы не могли бы использовать одни и те же экземпляры для всех служебных компонентов. Обратите внимание, что я не верю, что создание фабрик сообщений SAAJ занимает значительное время. С другой стороны, создание JAXB-контекстов может быть тяжелым, в зависимости от количества классов.