我们目前称为 SOAP Web 服务,它发回非常大的响应。
我们在调用 Web 服务时使用 Spring-WS(使用 WebServiceTemplate)、JAX-WS 客户端,并且应用程序在 Jboss EAP 6.0 上运行。
我们目前也使用 SaajSoapMessageFactory。我从论坛上读到应该使用 AxiomSoapMessageFactory 而不是 SaajSoapMessageFactory ( http://docs.spring.io/spring-ws/site/reference/html/common.html ) 来提高阅读性能。
我做了以下修改:
更换
<bean id="messageFactory" class="org.springframework.ws.soap.saaj.SaajSoapMessageFactory">
<property name="soapVersion">
<util:constant static-field="org.springframework.ws.soap.SoapVersion.SOAP_11" />
</property>
</bean>
经过
<bean id="messageFactory" class="org.springframework.ws.soap.axiom.AxiomSoapMessageFactory">
<property name="payloadCaching" value="false"/>
</bean>
此更改按预期工作得很好。但从性能的角度来看,我得到了令人惊讶的结果。
对于同时访问 Web 服务的50 个用户的测试(间接通过依次调用 Web 服务的屏幕),总响应时间(从单击按钮的那一刻到来自 Web 服务的响应重新显示在屏幕上的那一刻) ) 从 ~ 27 秒减少到 22 秒 - 这比 SaajSoapMessageFactory 改进了 5 秒。
但是,当我运行100 个用户的测试时,响应时间增加了 2 秒,并且 SaajSoapMessageFactory 在这种情况下似乎更好。
尽管 AxiomSoapMessageFactory 使用流式传输并避免构建树,但有人可以解释这种性能差异的原因吗?