SpringBoot-使用CXF-集成WebService-请求忽略命名空间

42次阅读

共计 903 个字符,预计需要花费 3 分钟才能阅读完成。

前景回顾

上一章我们介绍了如何用 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…

正文完
 0