1. 配置beans.xml
<cxf:bus>
<cxf:inInterceptors>
<ref bean="logInterceptor"/>
</cxf:inInterceptors>
</cxf:bus>
<bean name="logInterceptor" class="com.sf.module.test.LogInterceptor"></bean>
2. 拦截器实现
package com.sf.module.test;
import java.lang.reflect.Method;
import java.util.List;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.frontend.MethodDispatcher;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.apache.cxf.service.Service;
import org.apache.cxf.service.model.BindingOperationInfo;
public class LogInterceptor extends AbstractPhaseInterceptor<SoapMessage> {
public LogInterceptor() {
super(Phase.PRE_INVOKE);
}
@Override
public void handleMessage(SoapMessage message) throws Fault {
System.out.println(message);
// 获取方法信息
Exchange exchange = message.getExchange();
BindingOperationInfo bop = exchange.get(BindingOperationInfo.class);
MethodDispatcher md = (MethodDispatcher) exchange.get(Service.class).get(MethodDispatcher.class.getName());
Method method = md.getMethod(bop);
System.out.println(method);
// 获取参数
List<?> content = message.getContent(List.class);
System.out.println(content);
}
}