soap处理程序中入站和出站xml之间的关联

时间:2015-01-27 07:24:00

标签: java web-services soap jax-ws handler

我正在使用org.apache.cxf:cxf-codegen-plugin从我的wsdl文件创建Web服务。对于这些服务,我写了一个简单的 SOAPHandler< SOAPMessageContext> 用于记录入站和出站xml。

在这里,我可以检查xml是出站还是入站:

(Boolean) messageContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);

但是它们之间存在相关性问题。我怎么知道任何入站xml对应于任何出站xml?检查它的最佳方法是什么?例如,有没有办法在MessageContext修改中执行此操作?

提前致谢。

1 个答案:

答案 0 :(得分:1)

由于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);
}