3
我試圖找到一種將標題元素添加到SOAP消息的方法。 如果我使用@WebParam
與header
設置爲true
那麼它工作正常,該參數在<soap:header>
很好。但是,這需要在我的API中添加一堆參數,這幾乎不是一種選擇。將標題元素添加到SOAP消息
在第一視圖攔截器似乎不可能,所以我在看SOAPHandlers,但很難找到關於這個的明確信息。
這是我的Spring配置:
<bean id="testWebservice" class="org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean" >
<property name="serviceInterface" value="com...TestWebService"/>
<property name="wsdlDocumentUrl" value="http://localhost:9062/test-ws/remoting/test?wsdl"/>
<property name="serviceName" value="TestWebService"/>
<property name="namespaceUri" value="http://test.com"/>
<property name="portName" value="TestServicePort"/>
<property name="lookupServiceOnStartup" value="false"/>
<property name="handlerResolver" ref="myResolver"/>
</bean>
<bean id="myResolver" class="com...TestHandlerResolver" />
我的處理程序(在TestHandlerResolver鏈接):
public class TestHandler implements SOAPHandler<SOAPMessageContext> {
@Override
public void close(MessageContext context) {
}
@Override
public Set<QName> getHeaders() {
return null;
}
@Override
public boolean handleFault(SOAPMessageContext context) {
return true;
}
@Override
public boolean handleMessage(SOAPMessageContext context) {
if (Boolean.TRUE.equals(context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY))) {
try {
List<Header> headers = new ArrayList<Header>();
Header dummyHeader;
dummyHeader = new Header(new QName("dummy"), "decapitated", new JAXBDataBinding(String.class));
headers.add(dummyHeader);
context.put(Header.HEADER_LIST, headers);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return true;
}
}
的問題是,我有點不知所措。正在使用處理程序正確的方式來做到這一點,如果是的話,你可以給我或一個很好的例子指向我?攔截器有沒有辦法做到這一點?還是我在這裏完全的目標...
好一點,我忘了提,這是行不通的。該代碼無例外地執行,但虛擬標題未添加到消息中。 –