我正在使用org.apache.cxf:cxf-codegen-plugin从wsdl文件创建Web服务。对于这些服务,我编写了一个简单的SOAPHandler 来记录入站和出站xml。
在这里,我可以检查xml是出站还是入站:
(Boolean) messageContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
但是它们之间存在相关性问题。我怎么知道任何入站xml对应于任何出站xml?最好的检查方法是什么?例如,是否可以在MessageContext修改中做到这一点?
提前致谢。
最佳答案
由于SOAPMessageContext
也是Map<String,Object>
,因此可以在入站侧添加相关性ID:
String correlationID;
if (!Boolean.TRUE.equals(messageContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY))){
correlationID=System.currentTimeMillis(); // Better use somtehing more unique
messageContext.put("INBOUND_ID",correlationID);
}else{
correlationID= messageContext.get("INBOUND_ID",correlationID);
}