将SOAP消息标识为请求或响应

时间:2013-05-13 18:25:30

标签: soap cxf interceptor

我有一个中间件可以接受SOAP请求,也可以发出SOAP请求。

我编写了自定义拦截器来拦截入站和出站请求,以便将它们记录在数据库中。

问题在于,当发出SOAP请求时,InBound拦截器会拦截传入的请求,当我的模块发出SOAP请求时,它会被Outbound拦截器拦截,这是正确的。

但是我想识别传入的SOAP消息,因为它是SOAP请求或SOAP响应,因此我可以正确记录SOAP请求和响应。

有没有办法将SOAP消息标识为请求或响应?

2 个答案:

答案 0 :(得分:1)

如果存在针对SOAP调用的POST方法请求方法

,您始终可以获取标头并查找TCP标头

答案 1 :(得分:1)

您也可以使用CXF MessageUtils类来完成此操作。例如:

boolean requestor = MessageUtils.isRequestor(message);
boolean outbound = MessageUtils.isOutbound(message);
if (requestor) {
    if (!outbound) {
        //This is your RESPONSE message
    }
} else {
    if (!outbound) {
        //This is your REQUEST message
    }
}