最近碰到了现有的项目是Restful WS,还需要新加Soap WS的情况.
网上一番搜索,没有什么实际的效果,启用Soap WS后会导致默认的Restful WS context 丢失,
原因是DispatcherServletAutoConfiguration没有被调用。
后来引入了cxf starter,
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.1.11</version>
</dependency>
同时参考:
http://cxf.apache.org/docs/springboot.html
修改Application.java
@Configuration
......
/**
* For CXF SOAP WS
* Henry 2018/07/22
*/
@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
return new SpringBus();
}
@Autowired SoapPolicyService soapPolicyServiceImpl;
@Bean
public Endpoint endpoint() {
EndpointImpl endpoint = new EndpointImpl(springBus(), soapPolicyServiceImpl);
endpoint.publish("/policy");
return endpoint;
}
很快搞定,最后的结果是Restful WS 监听 root context /*
而Soap Ws 监听 /services/*
注意此处的Autowired.
Springboot虽好,还是要多看Autoconfig和文档啊。