我正在使用 WebServiceTemplate 使用肥皂网络服务,它在 spring3+ 中运行良好,性能良好。
spring :- 3.2.4.RELEASE
spring-ws-core :- 2.1.4.RELEASE
spring-ws-support :- 2.1.4.RELEASE
spring-ws-security :-2.1.4.RELEASE
调用soap服务的类
SaajSoapMessageFactory messageFactory = new SaajSoapMessageFactory(MessageFactory.newInstance());
messageFactory.afterPropertiesSet();
WebServiceTemplate webServiceTemplate = new WebServiceTemplate(messageFactory);
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setContextPath("some package");
marshaller.afterPropertiesSet();
webServiceTemplate.setMarshaller(marshaller);
webServiceTemplate.setUnmarshaller(marshaller);
webServiceTemplate.afterPropertiesSet();
webServiceTemplate.setInterceptors(clientInterceptors);
webServiceTemplate.setMessageSender(webServiceMessageSenderWithAuth);
webServiceTemplate.setDefaultUri(url);
Output result= ((JAXBElement<Output >) webServiceTemplate.marshalSendAndReceive(jaxbRequest)).getValue();
配置文件
@Configuration
public class WebServiceConfiguration {
@Autowired
private SaajSoapMessageFactory messageFactory;
@Autowired
private WebServiceMessageSenderWithAuth webServiceMessageSenderWithAuth;
@Bean
public Wss4jSecurityInterceptor getWss4jSecurityInterceptor(@Value("${WSDL.UserName}") String userName,
@Value("${WSDL.Password}") String password) {
Wss4jSecurityInterceptor wss4jSecurityInterceptor = new Wss4jSecurityInterceptor();
wss4jSecurityInterceptor.setSecurementActions("UsernameToken");
wss4jSecurityInterceptor.setSecurementPasswordType("PasswordText");
wss4jSecurityInterceptor.setSecurementUsername(userName);
wss4jSecurityInterceptor.setSecurementPassword(password);
return wss4jSecurityInterceptor;
}
@Bean
public SaajSoapMessageFactory getSaajSoapMessageFactory() {
return new SaajSoapMessageFactory();
}
@Bean
public ClientInterceptor[] clientInterceptors(Wss4jSecurityInterceptor wsSecurityInterceptor) {
return new ClientInterceptor[] { wsSecurityInterceptor };
}
}
性能结果 计时 - 平均时间约为500 毫秒,最大时间:- 1 秒
Spring Boot 1.5.20.RELEASE 和 2.2.2.RELEASE
使用 Spring Boot 相同的代码,无需任何更改,第一次调用大约需要 4 秒,如果继续点击相同的代码,则需要大约 2 秒
弹簧靴的性能结果
第一次通话:- 4 秒
无间隔的后续呼叫(1-10 秒间隙):- 2 秒至800 毫秒
它不断减少,同时以更短的间隔一次又一次地打同一个电话,并下降到类似结果的 spring mvc 3 但如果在某个间隔(如 5 分钟)后再次尝试,则再次遵循相同的模式如果在 5 分钟后尝试相同,则再次第一次和进一步调用的结果相同。
注意: - 使用 spring boot 我也尝试过wss4j而不是wss4j2 也尝试过AxiomSoapMessageFactory但没有运气
- 我已经尝试过连接保持活动等,但仍然没有运气