将PayloadRootAnnotationMethodEndpointMapping与WS-Security Encryption一起使用时,我收到此错误:[EndpointNotFound]找不到[SaajSoapMessage {http://www.w3.org/2001/04/xmlenc#} EncryptedData]
的端点映射Spring WS希望首先找到正确的端点,然后才解密SOAP主体。这显然不是正确的做法。
请不要告诉我SoapActionAnnotationMethodEndpointMapping是解决方案。有没有更好的方法?我不想基于SOAP Action或WS-A Action进行路由。
答案 0 :(得分:0)
不幸的是,使用SoapActionAnnotationMethodEndpointMapping
或AnnotationActionEndpointMapping
是您可以使用的唯一提供的映射。在Spring-WS中,在调用任何拦截器之前查询EndpointMapping
- 包括安全拦截器,这样你就必须找到一个不依赖于加密消息有效负载的映射。
也就是说,因为EndpointMapping
是一个接口,你也可以编写自己的接口,并包含你能想到的任何类型的路由逻辑。从AbstractAnnotationMethodEndpointMapping
扩展是这种方法的良好开端。完成映射后,只需将其连接到应用程序上下文中,它就应该由Spring-WS MessageDispatcher
自动检测。