【问题标题】:Invoke BPEL from a Webservice in OpenESB从 OpenESB 中的 Web 服务调用 BPEL
【发布时间】:2025-10-20 19:20:01
【问题描述】:

现在我正在使用 Open ESB 开发一个复合应用程序。我得到了我的 通过发送请求 SOAP 消息通过测试用例测试的应用程序, 而且效果很好。

问题是,我希望我的复合应用程序能够像 一个网络服务,所以我可以使用 SOAPpy 从 Python 调用复合应用程序, 而不是像在测试用例中那样发送经过编辑的 SOAP 消息。

我怎样才能做到这一点?我应该从 Web 服务调用 BPEL 流程吗?

我已经阅读了“A Gentle Introduction: Exploring OpenESB”和“Building SOA-Based 使用 NetBeans IDE 6" 的复合应用程序。这两本书都创建了一个接口 对于复合应用程序,而不是像 Web 服务那样使用复合应用程序。

提前致谢,

【问题讨论】:

  • 嘿,请帮助我通过 java 代码或 web 服务调用我的 bpel 应用程序。当我在使用 Locator 类获取 classnotfound(甚至 jar 包含该类)和 web 服务时通过 java 代码时我没有太多想法(我已经为我的进程生成了代理)

标签: web-services bpel soappy glassfish-esb open-esb


【解决方案1】:

嗯,根据定义,每个 BPEL 流程都被呈现为 Web 服务。换句话说:调用 BPEL 流程的唯一可能性是调用 BPEL 流程提供的 Web 服务接口(用于入站消息活动的合作伙伴链接的 myRole)。当您的测试用例也向 BPEL 流程提交 SOAP 消息时,任何其他 Web 服务客户端都可以这样做。

【讨论】:

    【解决方案2】:

    抱歉,回答晚了,但这可以帮助其他用户。 当然,他们不会将复合应用程序用作 Web 服务,因为它 - 复合应用程序 - 是使用您使用 BPEL 定义的 Web 服务的客户端(业务流程执行 LANGUAGE )。 p>

    现在的问题是,如何为我们的网络服务获取 wsdl?

    答案:

    1. 转到您的复合应用程序
    2. 选择“wsdl ports”选择您在“BPEL MODEL”项目中创建的wsdl。
    3. 右击=>属性=>位置,然后复制位置值
    4. 将 {httpdefaultport} 替换为 9080
    5. 将 ?wsdl 添加到位置的末尾

    【讨论】: