我创建了一个新的拆分连接(在OSB车间应用程序中)。然后,我使用一个操作“调用服务”来调用一个不安全的业务服务。到目前为止没问题。当我向业务服务分配安全策略时,OSB不接受。以下是OSB车间中的错误消息:并行、范围、调用服务--不支持BusinessService的WSDL绑定"OSB/1_0/BusinessServices/TestBS“:不支持服务特性”WS“。如何在splitJoin中调用安全的业务服务?
谢谢
发布于 2014-02-05 05:28:39
YOu永远不能调用在WSDL中定义了WS_POLICY的基于WSDL的代理/业务服务。您需要有一个中间业务/代理,才能将消息传递给包含WSDL服务的WS策略。
发布于 2014-06-12 01:54:10
我将提供一个user2364825正确答案的更多扩展版本。
拆分-连接实际上是一个进入旧产品的“窗口”(这就是为什么它的外观和行为与OSB不同)。该产品有一些局限性,包括无法使用WS_POLICY。
有两种常用的解决办法。
方法1.制作一个去掉WS_POLICY的同一个WSDL版本,并在拆分连接中使用它。从拆分连接中,调用中间代理,其中包含已剥离的WSDL,后者反过来使用原始WSDL调用业务服务。
BizService(Stripped WSDL)->Split-Join->Proxy2(Stripped WSDL)->BizService(Real WSDL)
只有当WS_POLICY头由OSB代码创建时,这种方法才能起作用。
如果通过拆分连接传递的消息已经有一些SOAP头(包括策略),那么这些消息将丢失,并且方法#1无法工作。
方法2.创建一个自定义WSDL,它用它的所有SOAP头和其他东西包装原始消息。将WSDL用于拆分连接,将包装好的消息传递给展开代理,然后调用真正的代理/biz。
BizService(Wrapper WSDL)->Split-Join->Proxy2(Wrapper WSDL)->BizService(Real WSDL)
第二种方法更复杂,但也更强大。例如,它可以很容易地扩展到支持用户头(拆分-连接也不支持它们),传递调试信息和几乎任何其他东西。
这种方法是在我的GenericParallel服务中实现的,上面所做的以及更多的工作。
我也有一篇博客文章概述了通过拆分连接传递SOAP头。的更多细节。(毕竟,WS_Policy只是一个SOAP头)。
https://stackoverflow.com/questions/20981139
复制相似问题