我想在这里给我两分钱.我在我的帖子中解决了同样的情况 -
http://saurzcode.in/2014/05/08/adding-header-to-soap-request-using-cxf-2/
弹簧配置: -
<jaxws:client id="mywebServiceClient"
serviceClass="com.saurzcode.TestService"
address="http://saurzcode.com:8088/mockTestService">
<jaxws:binding>
<soap:soapBinding version="1.2" mtomEnabled="true" />
</jaxws:binding>
</jaxws:client>
<cxf:bus>
<cxf:outInterceptors>
<bean class="com.saurzcode.ws.caller.SoapHeaderInterceptor" />
</cxf:outInterceptors>
</cxf:bus>
Run Code Online (Sandbox Code Playgroud)
CXF拦截器 -
public class SoapHeaderInterceptor extends AbstractSoapInterceptor {
public SoapHeaderInterceptor() {
super(Phase.POST_LOGICAL);
}
@Override
public void handleMessage(SoapMessage message) throws Fault {
List<Header> headers = message.getHeaders();
TestHeader testHeader = new TestHeader();
JAXBElement<TestHeader> testHeaders = new ObjectFactory()
.createTestHeader(testHeader);
try {
Header header = new Header(testHeaders.getName(), testHeader,
new JAXBDataBinding(TestHeader.class));
headers.add(header);
message.put(Header.HEADER_LIST, headers);
} catch (JAXBException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
我就是这样做的
Spring.xml
<import resource="classpath:META-INF/cxf/cxf.xml" />
<bean id="cxf" class="org.apache.cxf.bus.spring.SpringBus">
<property name="outInterceptors">
<list>
<ref bean="headerInterceptor"/>
</list>
</property>
<property name="inInterceptors">
<list>
<ref bean="headerInterceptor"/>
</list>
</property>
</bean>
<bean id="headerInterceptor" class="logging.Interceptor"/>
Run Code Online (Sandbox Code Playgroud)
拦截器:
public class UUIDHeaderInterceptor extends AbstractPhaseInterceptor {
private static final Logger logger = LoggerFactory.getLogger(UUIDHeaderInterceptor.class);
public UUIDHeaderInterceptor() {
super(Phase.RECEIVE);
}
@Override
public void handleMessage(Message message) throws Fault {
Map<String, List<String>> headers = (Map<String, List<String>>) message.get(Message.PROTOCOL_HEADERS);
headers.put(REQUEST_ID_ATTRIBUTE_NAME, Arrays.asList(new String[]{"TEST"}));
}
}
@Override
public void handleFault(Message message) {
handleMessage(message);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22589 次 |
| 最近记录: |