我正在努力提高现有应用程序的启动性能。该应用程序目前正在对另外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都要花几秒钟时间“创建SAAJ1.3 MessageFactory ..”。
同样,对于每个服务bean,也有一个Jaxb2Marshaller实例。我是否可以只对所有用户使用Jaxb2Marshaller实例,并组合上下文路径。
发布于 2017-02-28 21:42:07
SAAJ消息工厂和JAXB上下文是不可变的和线程安全的,因此没有理由不能对所有服务bean使用相同的实例。请注意,我不认为创建SAAJ消息工厂需要大量时间。另一方面,创建JAXB上下文可能是重量级的,这取决于类的数量。
https://stackoverflow.com/questions/42491070
复制相似问题