2013-05-13 31 views
0

我有一个中间件,它可以接受SOAP请求,并且可以发出SOAP请求。将SOAP消息标识为请求或响应

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

问题是,当发出SOAP请求时,入局请求被InBound拦截器拦截,当我的模块发出SOAP请求时,它被出站拦截器拦截,这是正确的。

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

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

回答

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 
    } 
} 
+0

真棒我正在寻找这种解决方案,但没有得到任何,所以我依靠Moles提到的Http方法。 – NullPointerException 2013-05-16 15:16:32

1

你总是可以得到头,寻找是否有一个请求方法TCP报头说POST一个SOAP调用

+0

,我不知道,但不会是永远POST或者它可以是GET以及 – NullPointerException 2013-05-13 20:49:05

+0

你似乎是在WS方面的专家,我ñ新手到网络的服务,您可以看看** [this](http://stackoverflow.com/questions/16526506/catching-the-soap-fault-error-in-custom-interceptor-soap12faultoutinterceptor)**以及 – NullPointerException 2013-05-13 20:50:56

+1

SOAP始终是POST消息,但会抵消WSDL – fpmoles 2013-05-14 13:37:11