2014-01-07 15 views
0

我創建了一個新的拆分聯接(在OSB車間應用程序中)。然後 我使用「調用服務」操作來調用不安全的業務服務。到目前爲止沒有問題。當我將安全策略分配給我的業務服務時,OSB不接受。以下是OSB研討會中的錯誤消息: [Parallel,Scope,Invoke Service] 不支持BusinessService「OSB/1_0/BusinessServices/TestBS」的WSDL綁定:不支持服務功能「WS-Security」。 如何在splitJoin中調用擔保業務服務?OSB - 拆分聯接調用安全的Web服務

感謝

回答

0

你永遠不可能通話已在WSDL定義WS_POLICY一個WSDL基於代理/業務服務。您需要有一箇中間業務/代理將消息傳遞給包含WSDL服務的WS策略。

1

我會放一點更正確的答案user2364825擴大版本。

拆分連接實際上是一個老式產品的「窗口」(這就是爲什麼它的外觀和行爲與OSB不同)。該產品有一些限制,包括無法使用WS_POLICY。

有兩種常用的解決方法。

方法#1。創建一個WS_POLICY相同的WSDL版本,並在Split-Join中使用它。從Split-Join中,使用剝離的WSDL調用中間代理,然後WSDL調用具有原始WSDL的業務服務。

BizService(Stripped WSDL)->Split-Join->Proxy2(Stripped WSDL)->BizService(Real WSDL) 

該方法僅在WS_POLICY頭由OSB代碼創建時纔有效。

如果通過Split-Join發送的消息已經有一些SOAP Headers(包括策略),那麼這些消息將會丟失,並且方法#1不起作用。

方法#2。製作一個自定義的WSDL,它包含原始消息及其所有SOAP Headers和什麼。使用該WSDL進行拆分連接,將包裹的消息傳遞給解包代理,然後調用真正的代理/業務夥伴。

BizService(Wrapper WSDL)->Split-Join->Proxy2(Wrapper WSDL)->BizService(Real WSDL) 

第二種方法更復雜,但也更強大。例如,它可以很容易地擴展爲支持用戶頭(Split-Join不支持它們),傳遞調試信息和其他任何東西。

此方法在我的GenericParallel服務中實現,該服務完成以上和更多操作。

我還有一篇博客文章,詳細介紹了passing the SOAP Headers via Split-Join。 (畢竟,WS_Policy只是一個SOAP Header)。