[英]How to Manage Service Location in BPEL process file
我已经创建了一个bpel进程,并且能够成功调用该服务。
但是,我提到的是WSDL中的服务位置,如下所示
<soap:address location="http://localhost:8081/service_sample/services/multiplySoapPort" />
如果位置发生变化,是否需要更改wsdl文件?
还是有其他方法可以处理这种情况?
我是SOA世界,BPEL,ESB的新手。 在这里学习和申请我缺少什么?
对于专家来说,这个问题听起来很愚蠢,但是仍然想知道如何克服这个问题。
我正在使用JBoss SOA Platform 5.2。 (所有供应商的BPEL都是相同的)。
BPEL本身仅使用WSDL的与平台无关的部分:partnerlink是指partnerlink类型,它是指端口类型(不是服务!)。实际调用的服务的定义在BPEL标准之外,并且是部署的一部分。 JBoss使用Apache ODE AFAIK的定制版本。 对于ODE部署描述符,您可以在部署中指定端口和服务。 引擎直接从服务元素获取端点。
如果您希望以后更灵活地更改端点,则有两种选择:
使用某种形式的ESB(尽管您可以使用它,但不一定代表高端产品。在某些项目中,我们还使用小型Apache Camel Wrapper ...):ESB层提供了所谓的Endpoint Transparency :在流程部署中,您将流程配置为调用ESB层,而ESB层又调用实际的服务(路由)。 如果实际服务的位置发生了变化,那么您可以在ESB中更改路由规则,而不必将BPEL流程和所有其他使用者放在一边。
在BPEL文件中,将端点直接分配给合作伙伴链接。 如果仅关于配置,我将不希望使用此解决方案。 您需要从任何地方读取端点位置,然后将其读取到partnerlink。 您需要分配给partnerlink的XML是这样的:
<sref:service-ref xmlns:sref =“ http://docs.oasis-open.org/wsbpel/2.0/serviceref”> <EndpointReference xmlns =“ http://www.w3.org/2005/08/addressing “> <Address> YourNewEndpoint </ Address> </ EndpointReference> </ sref:service-ref>
希望这可以帮助!
更新:这是注释中要求的完整分配活动(我无法以某种方式在注释中添加此内容):
<bpel:assign>
<bpel:copy>
<bpel:from>
<bpel:literal>
<sref:service-ref xmlns:sref="http://docs.oasis-open.org/wsbpel/2.0/serviceref">
<EndpointReference xmlns="http://www.w3.org/2005/08/addressing">
<Address>YourNewEndpoint</Address>
</EndpointReference>
</sref:service-ref>
</bpel:literal>
</bpel:from>
<bpel:to partnerLink="YourPartnerLink"/>
</bpel:copy>
</bpel:assign>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.