我正在尝试提高现有应用程序的启动性能。 此应用程序当前正在对另外8个应用程序进行服务调用,因此有8个服务bean扩展了WebServiceGatewaySupport。每个服务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都会花费几秒钟时间&#34;创建SAAJ 1.3 MessageFactory ..&#34;。
在类似的说明中,每个服务bean也有一个Jaxb2Marshaller实例。我是否可以仅使用Jaxb2Marshaller的实例,并组合上下文路径。
答案 0 :(得分:0)
SAAJ消息工厂和JAXB上下文是不可变的和线程安全的,因此没有理由不能为所有服务bean使用相同的实例。请注意,我不认为创建SAAJ消息工厂需要花费大量时间。另一方面,创建JAXB上下文可能是重量级的,具体取决于类的数量。