【问题标题】:Error when running a bpel process in ode在 ode 中运行 bpel 进程时出错
【发布时间】:2013-04-17 18:29:24
【问题描述】:

我正在努力学习使用 bpel。我选择 Eclipse Bpel Designer 和 apache ode(在 tomcat 服务器上)进行实验。我试图建模的过程是一个贷款过程。它有 3 项服务:creditRate 服务(用 eclipse bpel 设计器编写并预先部署并经过测试,它可以工作)、currency converter service 和主编排过程。虽然我在从 Eclipse 测试 Web 服务时没有部署错误,但会发生以下错误:

ERROR [ExternalService] 向 Axis2 发送消息以获取 ODE mex 时出错 {PartnerRoleMex#hqejbhcnphr87mcnd0np43 [PID {CreditBuletinNamespace}CreditBuletin-137] 调用 org.apache.ode.bpel.epr.WSAEndpoint@a64453.getRating(...) 状态 REQUEST} org.apache.ode.axis2.OdeFault:找不到绑定操作: 服务 {http://www.webserviceX.NET/}CurrencyConvertor 端口 CurrencyConvertorSoap 名称 getRating。在 org.apache.ode.axis2.util.SoapMessageConverter.createSoapRequest(SoapMessageConverter.java:154)

调用失败:向 Axis2 发送消息以获取 ODE mex 时出错 {PartnerRoleMex#hqejbhcnphr87mcnd0np43 [PID {CreditBuletinNamespace}CreditBuletin-137] 调用 org.apache.ode.bpel.epr.WSAEndpoint@a64453.getRating(...) 状态 请求} 21:09:14,421 信息 [BpelRuntimeContextImpl] ActivityRecovery: 注册活动19,失败原因:发送消息时出错 ODE mex 的 Axis2 {PartnerRoleMex#hqejbhcnphr87mcnd0np43 [PID {CreditBuletinNamespace}CreditBuletin-137] 调用 org.apache.ode.bpel.epr.WSAEndpoint@a64453.getRating(...) 状态 频道 33 上的 REQUEST}

有人可以帮我解决吗?我已经搜索了一些解决方案,但没有找到一个有效的解决方案。可能是由于我知识贫乏,我没有正确搜索或没有做正确的事情。因为这个描述可能会令人困惑,所以我附上了我的解决方案,因为我相信他们会更多地告诉我我正在尝试做什么以及我做错了多少。 http://www.mediafire.com/?9bjgt44spln1zwr

提前谢谢你

编辑:在执行迭代方法之后(如第一个答案中所建议的),外部转换服务似乎没有从 ode 响应。这很奇怪,因为该服务在浏览器中运行,并且在部署时没有报告错误。再次因为我知识贫乏,我相信代码比我的措辞更好。我只使用外部货币转换器制作了一个 Eclipse 项目。衷心感谢任何帮助/指导。先感谢您。 http://www.mediafire.com/?56csca1qgt5ka9a

【问题讨论】:

    标签: eclipse tomcat eclipse-plugin bpel


    【解决方案1】:

    您的CreditRating 进程工作正常,错误在于CreditBuletin 进程。当我用soapUI 测试这个时,我得到一个selectionFailure。 BPEL 中的此错误表明您的流程中的 fromto 有问题。

    这里概述问题是您的CreditBuletin 流程活动的一个非常简化的版本,简化为最初的receive、最终的reply 和您之间的assign 活动之一。您可以将其粘贴到您的进程的主要sequence 以重现问题。

    <bpel:receive name="receiveInput" partnerLink="clientInput" operation="getLoan" portType="tns:CreditBuletinPT" variable="receiveInput" createInstance="yes"></bpel:receive>
    
            <bpel:assign validate="no" name="AssignFinal">
                <bpel:copy>
                    <bpel:from>
                        <bpel:literal>
                            <tns:SumaRON xmlns:tns="CreditBuletinNamespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                                <output>0</output>
                            </tns:SumaRON>
                        </bpel:literal>
                    </bpel:from>
                    <bpel:to variable="outputResult" part="parameters"></bpel:to>
                </bpel:copy>
                <bpel:copy>
                    <bpel:from>
                        <![CDATA[$loanWithInterest * bpel:getVariableData('CurrencyRateInputResponse','parameters','ConversionRateResult')]]>
                    </bpel:from>
                    <bpel:to part="parameters" variable="outputResult">
                        <bpel:query queryLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">
                            <![CDATA[output]]>
                        </bpel:query>
                    </bpel:to>
                </bpel:copy>
            </bpel:assign>
    
            <bpel:reply name="outputResult" partnerLink="clientInput" operation="getLoan" portType="tns:CreditBuletinPT" variable="outputResult"></bpel:reply>
    

    您尝试分配相同的变量两次,首先是默认初始化。这没有多大意义,但出于某种原因,BPEL 编辑器默认生成这些初始化。例如,如果您将第二个 copy 中的 from 语句更改为其他内容,您会得到正确的回复

    <![CDATA[bpel:getVariableData('receiveInput','parameters','suma')]]>
    

    所以,您的问题来自您的from 语句,很可能是使用getVariableData() 函数的语句。现在,我不想修复您流程中的所有表达式(因为有很多,这是您的任务),但我建议查看所有表达式。从最小的工作流程开始,例如上面交换了from 的流程,并在测试每个增量时对功能进行增量更新。这样,你最终会得到一些有用的东西。

    【讨论】:

    • 非常感谢您的建议。结果货币转换器没有得到响应,这很奇怪,因为当我从浏览器调用它时它是有效的。我已经用它做了一个新项目,但我不知道它是否正确,因为我还没有看到使用 ode 从 eclipse 调用外部 Web 服务的示例。如果不是太多,你能给我你在这件事上的专业知识吗?提前谢谢你
    • 货币换算服务好像不行。当我从soapUI(或Eclipse Web 服务资源管理器)调用它时,我得到一个带有错误的soap 错误:System.Web.Services.Protocols.SoapException: Server was unable to process request. ---&gt; System.IO.IOException: There is not enough space on the disk. 和一个堆栈跟踪。这是一条非常可疑的错误消息;)请注意,即使您可以在浏览器中访问该主机上的网页并不意味着他们的服务能够处理请求。
    • 当我尝试调用他们的全球天气服务时也会发生同样的情况。他们现在似乎真的遇到了一些麻烦。如果您需要货币转换器服务,您应该联系他们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多