WebServiceTemplate - Interceptor和Callback之间的区别?

时间:2012-06-21 15:13:49

标签: java callback interceptor spring-ws webservicetemplate

我正在尝试使用Spring-WS编写我的第一个客户端,并且在某些基础知识上有点困惑。我需要在标头中插入一个SAML标记,我注意到WebServiceTemplate类允许拦截器和WebServiceMessageCallbacks。

有人可以帮助我理解为什么我应该使用一个与另一个相比?

其次,我注意到WST类允许拦截器列表,但只允许一个回调。有谁知道设计决策背后的逻辑是什么?为什么没有能力传递数组或回调列表?

谢谢,

埃里克

1 个答案:

答案 0 :(得分:3)

在阅读你的问题之后,我也想知道同样的问题( - :

this link上有一个简短的解释,这正是我如何使用它们的原因。例如,对于特定请求,我需要设置SOAP操作:

JAXBElement<Response> response = (JAXBElement<Response>) webserviceTemplate.marshalSendAndReceive(
    request, 
    new SoapActionCallback("PutOrganisationUnitRequest")
);

这确实是链接中提到的一个简单的匿名类。另一方面,拦截器被定义并用于所有请求。例如,看一下XwsSecurityInterceptor,我用它来设置所有请求的身份验证。