前景回顾

上一章我们介绍了如何用springBoot 来搭建一个WebService服务《SpringBoot 使用CXF 集成WebService》,还不了解的同学可以去看下。

在使用CXF搭建的WebServic服务时,有个很不爽的地方就是请求必须带上命名空间。这个就没axis爽了。
本章我们就看看如何忽略命名空间。

CXF拦截器

要解决命名空间的问题其实很简单,CXF中提供了丰富的拦截器。废话不多说了, 直接上代码。

import org.apache.cxf.interceptor.Fault;import org.apache.cxf.message.Message;import org.apache.cxf.phase.AbstractPhaseInterceptor;import org.apache.cxf.phase.Phase;import org.apache.cxf.service.model.ServiceInfo;/** * 去掉命名空间 * * @author yueli * @date 2019-08-06 19:08 */public class ServerNameSpaceInterceptor extends AbstractPhaseInterceptor<Message> {    public ServerNameSpaceInterceptor() {        super(Phase.RECEIVE);    }    @Override    public void handleMessage(Message message) throws Fault {        for (ServiceInfo si : message.getExchange().getService().getServiceInfos()) {            // 忽略掉命名空间的关键            si.setProperty("soap.force.doclit.bare", true);        }    }}

是不是很简单, 到这我们就可以完美的解决命名空间的问题了。

有想要完整实例的请看着 >> https://github.com/yuelicn/sp...

或者直接clone >> https://github.com/yuelicn/sp...