我正在尝试在 WSO2 BPS BPEL 流程中使用动态确定的端点地址实现合作伙伴链接。这个想法是发送到进程的请求包含一个端点 URL,并且这个 URL 被用作某个合作伙伴链接的地址。我之前已经成功使用了存储在注册表中的端点引用,但是我不能在这里使用这种方法,因为每次调用进程时地址都可能不同。
我尝试了许多不同的方法(使用 WSO2 BPS 3.5.1 和 WS02 Developer Studio 3.8.0):
在https://stackoverflow.com/questions/11092515/dynamic-partner-links-and-dynamic-addressing-with-ode-bpel中引用的 DynPartner 示例中使用的方法。这给了我在 Developer Studio 中的以下验证错误:
The from-spec of "<xs:simpleType "string">" is not compatible with to-spec of "<wsdl:portType "DynResponderPortType">"
. 此外,当我部署和调用该流程时,我收到一条错误消息,指出无法创建端点 (Couldnt create any endpoint for element ...
)为合作伙伴链接分配一个固定值,例如:
<wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsdl11="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3schools.com uep_schema.xsd"> <wsa:Address>http://localhost:8281/services/serviceaddress</wsa:Address> </wsa:EndpointReference>
这有效并且不会给出验证错误,但我还没有找到一种方法来根据调用我的过程的输入动态更改此处使用的地址。
使用定义端点引用内容的类型创建一个保存端点引用的变量。我已经尝试了几个 XSD(http://docs.oasis-open.org/wsbpel/2.0/OS/serviceref/ws-bpel_serviceref.xsd,http://svn.wso2.org/repos/wso2/carbon/platform /branches/turing/components/unified-endpoint/org.wso2.carbon.unifiedendpoint.core/4.2.0/src/main/resources/schema/uep_schema.xsd(没有得到验证没有错误),ws- w3c 中的 addr.xsd,我自己的非常简单的 XSD)。我在 Developer Studio 处理它们的能力方面取得了不同程度的成功,例如生成初始化,但它们都有一个问题,即我收到一个验证错误,说明类似
The from-spec of "<element "EndpointReference">" is not compatible with to-spec of "<wsdl:portType "ThisIsThePartnerLinkPortType">" -
.
此时,我将最后一种方法与我自己的简单 XSD 一起使用。这个过程实际上是按照我想要的方式工作的,但是我仍然在 Developer Studio 中遇到我想摆脱的验证错误。有没有另一种更好的方法来解决这个问题?
在此先感谢您的帮助。