Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parallel processing OSB-调用安全web服务的拆分联接_Parallel Processing_Soa_Osb - Fatal编程技术网

Parallel processing OSB-调用安全web服务的拆分联接

Parallel processing OSB-调用安全web服务的拆分联接,parallel-processing,soa,osb,Parallel Processing,Soa,Osb,我创建了一个新的拆分联接(在OSB workshop应用程序中)。然后 我使用操作“调用服务”来调用不安全的业务服务。到目前为止没有问题。当我向我的业务服务分配安全策略时,OSB不接受。以下是OSB研讨会中的错误消息: [并行、作用域、调用服务] 不支持BusinessService“OSB/1_0/BusinessServices/TestBS”的WSDL绑定:不支持服务功能“WS-Security”。 如何在splitJoin中调用安全业务服务 谢谢您永远不能调用WSDL中定义了WS_策略的

我创建了一个新的拆分联接(在OSB workshop应用程序中)。然后 我使用操作“调用服务”来调用不安全的业务服务。到目前为止没有问题。当我向我的业务服务分配安全策略时,OSB不接受。以下是OSB研讨会中的错误消息: [并行、作用域、调用服务] 不支持BusinessService“OSB/1_0/BusinessServices/TestBS”的WSDL绑定:不支持服务功能“WS-Security”。 如何在splitJoin中调用安全业务服务


谢谢

您永远不能调用WSDL中定义了WS_策略的基于WSDL的代理/业务服务。您需要有一个中间业务/代理来将消息传递给包含WSDL服务的WS-policy。

我将在user2364825的正确答案中添加一个更扩展的版本

SplitJoin实际上是一个进入旧产品的“窗口”(这就是为什么它的外观和行为与OSB不同)。该产品有一些限制,包括无法使用WS_策略

有两种常用的解决方法

方法#1。使同一个WSDL版本脱离WS_策略,并在拆分联接中使用它。从拆分连接中,使用剥离的WSDL调用中间代理,后者反过来使用原始WSDL调用业务服务

BizService(Stripped WSDL)->Split-Join->Proxy2(Stripped WSDL)->BizService(Real WSDL)
只有当WS_策略头由OSB代码创建时,这种方法才有效

如果通过splitjoin发送的消息已经有一些SOAP头(包括策略),那么这些头将丢失,并且方法1不起作用

接近#2。制作一个定制的WSDL,它将原始消息及其所有SOAP头等等包装起来。将该WSDL用于拆分联接,将包装好的消息传递给展开代理,然后调用真正的代理/biz

BizService(Wrapper WSDL)->Split-Join->Proxy2(Wrapper WSDL)->BizService(Real WSDL)
第二种方法更复杂,但也更强大。例如,它可以很容易地扩展到支持用户头(SplitJoin也不支持它们)、传递调试信息和几乎所有其他内容

这种方法在我的服务中得到了实现,我的服务完成了以上所有工作,还有更多工作

我也有一篇博文详细介绍了一些情况。(WS_策略毕竟只是一个SOAP头)