我已经创建了一个bpel进程,并且能够成功调用该服务。

但是,我提到的是WSDL中的服务位置,如下所示

<soap:address location="http://localhost:8081/service_sample/services/multiplySoapPort" />

如果位置发生变化,是否需要更改wsdl文件?

还是有其他方法可以处理这种情况?

我是SOA世界,BPEL,ESB的新手。 在这里学习和申请我缺少什么?

对于专家来说,这个问题听起来很愚蠢,但是仍然想知道如何克服这个问题。

我正在使用JBoss SOA Platform 5.2。 (所有供应商的BPEL都是相同的)。

===============>>#1 票数:2

BPEL本身仅使用WSDL的与平台无关的部分:partnerlink是指partnerlink类型,它是指端口类型(不是服务!)。实际调用的服务的定义在BPEL标准之外,并且是部署的一部分。 JBoss使用Apache ODE AFAIK的定制版本。 对于ODE部署描述符,您可以在部署中指定端口和服务。 引擎直接从服务元素获取端点。

如果您希望以后更灵活地更改端点,则有两种选择:

  1. 使用某种形式的ESB(尽管您可以使用它,但不一定代表高端产品。在某些项目中,我们还使用小型Apache Camel Wrapper ...):ESB层提供了所谓的Endpoint Transparency :在流程部署中,您将流程配置为调用ESB层,而ESB层又调用实际的服务(路由)。 如果实际服务的位置发生了变化,那么您可以在ESB中更改路由规则,而不必将BPEL流程和所有其他使用者放在一边。

  2. 在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>

  ask by user3500159 translate from so

未解决问题?本站智能推荐: