我會放一點更正確的答案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)。