前景回顧
上一章我們介紹了如何用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);
}
}
}
是不是很簡單, 到這我們就可以完美的解決命名空間的問題了。