soap 处理程序中入站和出站 xml 之间的相关性
correlation between inbount and outbound xml in soap handler
我正在使用 org.apache.cxf:cxf-codegen-plugin 从我的 wsdl 文件创建网络服务。对于这些服务,我编写了一个简单的 SOAPHandler< SOAPMessageContext > 来记录入站和出站 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);
}
我正在使用 org.apache.cxf:cxf-codegen-plugin 从我的 wsdl 文件创建网络服务。对于这些服务,我编写了一个简单的 SOAPHandler< SOAPMessageContext > 来记录入站和出站 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);
}