我的操作有这样的输入消息:
InputMessageType
我想在它遇到目标WS方法之前修改这个messageType,我为Phase.USER_LOGICAL写了一个拦截器。但是,在handleMessage中,如果我尝试这样做:
message.getContent(InputMessageType.class)它返回null。
如何获取对InputMessageType的引用,更改它的messageType属性,然后让CXF使用修改后的输入参数调用WS?
答案 0 :(得分:2)
我和你的问题一样:message.getContent(xxx.class)返回null。我不知道为什么,我稍后会检查这种行为。
所以我使用这样的拦截器(我检索MessageContentsList):
public class ApiSoapActionInInterceptorService extends AbstractPhaseInterceptor<Message> {
public ApiSoapActionInInterceptorService(){
super(Phase.PRE_INVOKE);
}
@Override
public void handleMessage(Message message) throws Fault {
MessageContentsList inObjects = MessageContentsList.getContentsList(message);
if (inObjects != null && !inObjects.isEmpty()){
for (Iterator<Object> it = inObjects.iterator(); it.hasNext() ;){
Object ob = it.next();
if (ob instanceof InputMessageType){
//TODO
}
}
} else {
//TODO
}
}
}