天天看點

java忽略命名空間_SpringBoot 使用CXF 內建WebService 請求忽略命名空間

前景回顧

上一章我們介紹了如何用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;

public class ServerNameSpaceInterceptor extends AbstractPhaseInterceptor {

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);

}

}

}

是不是很簡單, 到這我們就可以完美的解決命名空間的問題了。