我使用像这样的SoapHandler拦截传入和传出的soap消息:
@Override
public boolean handleMessage(SOAPMessageContext context) {
boolean isResponse = (Boolean)context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if(!isResponse){
logger.debug("MySoapHandler.handleMessage(): this is a soap request");
SOAPMessage soapMsg = context.getMessage();
SOAPMessage = createNewSoapRequest(soapMsg);
context.setMessage(newSoapMsg);
}
else {
logger.debug("MySoapHandler.handleMessage(): this is a soap response");
SOAPMessage soapMsg = context.getMessage();
SOAPMessage newSoapMsg = createNewSoapResponse(soapMsg);
context.setMessage(newSoapMsg);
}
return true;
}
我收到传入的肥皂消息并将其替换为新消息并将其发送到途中。我可以监控收到的消息及其替换,一切看起来都正确。如果我注释掉传入的部分并通过使用SoapUI发送正确的请求来测试传出的部分,则拦截传出的soap响应并替换为新消息。这也似乎工作正常。
当我取消对收到的部分发表评论时,请告诉我们' rip,正确触发传入的响应,但是在生成它的主代码完成之前,传出响应似乎过早被触发。任何人都能解释一下吗?