多个 WebServiceTemplate 和 SaajSoapMessageFactory 性能

Multiple WebServiceTemplate and SaajSoapMessageFactory performance

我正在尝试提高现有应用程序的启动性能。 此应用程序当前正在对另外 8 个应用程序进行服务调用,因此有 8 个扩展 WebServiceGatewaySupport 的服务 bean。这些服务 bean 中的每一个都有自己的 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>

我想知道这是否有必要,或者我是否可以为我的所有服务 bean 仅使用一个 messageFactory 实例。我不确定我是否需要担心阻止消息处理。 我考虑从这个开始的原因是因为每次启动 SaajMessageFactory "Creating SAAJ 1.3 MessageFactory ..".

都会花费几秒钟

类似地,每个服务 bean 也有一个 Jaxb2Marshaller 实例。我可以只对所有 Jaxb2Marshaller 实例使用,并结合上下文路径吗?

SAAJ 消息工厂和 JAXB 上下文是不可变的并且是线程安全的,因此您没有理由不能对所有服务 bean 使用相同的实例。请注意,我认为创建 SAAJ 消息工厂不会花费大量时间。另一方面,创建 JAXB 上下文可能是重量级的,具体取决于 类.

的数量