如何从 BPS 上的 BPEL 流程调用在 ESB 上运行的 REST 代理服务 [英] How to invoke a REST Proxy service running on the ESB from a BPEL process on the BPS

查看:21
本文介绍了如何从 BPS 上的 BPEL 流程调用在 ESB 上运行的 REST 代理服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经设置了 BPS 并创建了一些 BPEL 流程,我可以使用它们来调用应用服务器上的服务.我在 ESB 上创建了一个 REST 代理服务,它使用到 Labview 服务器的端点.在 Labview 中,我有一个非常基本的 REST 服务,它每秒生成一个随机值.我可以按如下方式访问 REST 服务 http://localhost:8000/Maths/random.这将生成具有随机值的以下输出

I have setup BPS and have created a few BPEL processes which i can use to invoke services on the Application Server. I have created a REST proxy service on the ESB which uses an endpoint to a Labview server. In Labview i have a very basic REST service which generates a random value every second. I can access the REST service as follows http://localhost:8000/Maths/random. This generates the follwing output with a random value

RValue:19.000000

我已成功通过小工具服务器访问此服务并使用 WSO2 图形框架将值显示为图形.

I have had success in accessing this service through the Gadget server and displaying the value as a graph using the WSO2 graphics framework.

但是当我尝试从 BPEL 流程调用相同的代理服务时遇到了问题.我已经从 ESB 为代理服务生成了一个 wsdl 文件.这个 wsdl 文件用于端口连接等.它只有一个操作中介"操作,没有参数或元素.我已经按照 BPS 服务器的一些教程来调用该服务,但到目前为止我还没有成功.任何人都可以告诉我如何做到这一点或向我指出类似的教程吗?非常感谢.

But I am having problems when I try to invoke the same proxy service from a BPEL process. I have generated a wsdl file for the proxy service from the ESB. This wsdl file is used for the port connections etc. It only has one operation the "mediate" operation with no parameters or elements. I have followed a few of the tutorials for the BPS server to invoke the service but i have had no success so far. Can anyone show me how this can be done or point me to a similar tutorial? Many thanks.

乌拉扎下面是我得到的 BPS 错误

U Raza below is the BPS error i get

[2012-03-15 18:22:33,265] 信息 - BpelServerImpl - 注册进程 {http://areasearvice.bpel.bps}AreaService-14.[2012-03-15 18:22:42,282] 信息 - CarbonAuthenticationUtil - 'admin' 从 IP 地址 143.53.207.235 登录 [2012-03-15 18:22:42,0282][2012-03-15 18:23:09,041] 错误 - BpelObjectFactory$BOMSAXErrorHandler - null:file:///D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12RestBPELREST.bpel:88:56:cvc-complex-type.3.2.2:属性xml:space"不允许出现在元素bpel:literal"中.[2012-03-15 18:23:09,043] 警告 - BpelObjectFactory - 解析期间的验证错误,由于 -Dorg.apache.ode.compiler.failOnValidationErrors=false 开关而继续[2012-03-15 18:23:09,046] INFO - BpelC - info: [CompilingProcess] 编译 BPEL 流程.[2012-03-15 18:23:09,116] 信息 - WSDLRegistry - 文件中的 WSDL:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/sLV重复导入,您的文档应该都在不同的命名空间中(这不是很好,但仍然可以工作).[2012-03-15 18:23:09,116] 信息 - WSDLRegistry - 文件中的 WSDL:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST.导入,这表示循环引用.[2012-03-15 18:23:09,134] 错误 - BpelC - 文件:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/:RestfulProxy:error.bpel: [CopyToMessageFromNonMessage] 复制到消息变量 RestProxyPLRequest 需要 r 值的消息.[2012-03-15 18:23:09,139] 错误 - BpelC - file:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/:RestfulProxy:error.bpel: [CopyFromMessageToNonMessage] 从消息变量 RestProxyPLResponse 复制需要左值的消息.[2012-03-15 18:23:09,143] 错误 - BPELUploadExecutor - BPEL 流程编译失败.org.apache.ode.bpel.compiler.api.CompilationException:错误:[CompilationErrors] 编译完成,但出现 2 个错误:file:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:72: 错误:[CopyToMessageFromNonMessage] 复制到消息变量 RestProxyPLRequest 需要一条消息给 r-价值.file:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:95: 错误:[CopyFromMessageToNonMessage] 从消息变量复制 RestProxyPLResponse 需要一条消息给 l-价值.在 org.apache.ode.bpel.compiler.BpelCompiler.compile(BpelCompiler.java:815)在 org.apache.ode.bpel.compiler.BpelC.compile(BpelC.java:278)在 org.apache.ode.bpel.compiler.BpelC.compile(BpelC.java:364)在 org.apache.ode.store.DeploymentUnitDir$5.run(DeploymentUnitDir.java:213)在 org.apache.ode.utils.InternPool.runBlock(InternPool.java:57)在 org.apache.ode.store.DeploymentUnitDir.compile(DeploymentUnitDir.java:210)在 org.apache.ode.store.DeploymentUnitDir.compile(DeploymentUnitDir.java:169)在 org.wso2.carbon.bpel.ui.fileupload.BPELUploadExecutor.validateBPELPackage(BPELUploadExecutor.java:262)在 org.wso2.carbon.bpel.ui.fileupload.BPELUploadExecutor.execute(BPELUploadExecutor.java:101)在 org.wso2.carbon.ui.transports.fileupload.AbstractFileUploadExecutor.executeGeneric(AbstractFileUploadExecutor.java:105)在 org.wso2.carbon.ui.transports.fileupload.FileUploadExecutorManager$CarbonXmlFileUploadExecHandler.execute(FileUploadExecutorManager.java:392)在 org.wso2.carbon.ui.transports.fileupload.FileUploadExecutorManager$FileUploadExecutionHandlerManager.startExec(FileUploadExecutorManager.java:276)在 org.wso2.carbon.ui.transports.fileupload.FileUploadExecutorManager.execute(FileUploadExecutorManager.java:125)在 org.wso2.carbon.ui.transports.FileUploadServlet.doPost(FileUploadServlet.java:57)在 javax.servlet.http.HttpServlet.service(HttpServlet.java:641)在 javax.servlet.http.HttpServlet.service(HttpServlet.java:722)在 org.eclipse.equinox.http.helper.ContextPathServletAdaptor.service(ContextPathServletAdaptor.java:36)在 org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90)在 org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:111)在 org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:67)在 javax.servlet.http.HttpServlet.service(HttpServlet.java:722)在 org.wso2.carbon.bridge.BridgeServlet.service(BridgeServlet.java:155)在 javax.servlet.http.HttpServlet.service(HttpServlet.java:722)在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)在 org.wso2.carbon.server.TomcatServer$1.invoke(TomcatServer.java:241)在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)在 org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:396)在 org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:356)在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1534)在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(未知来源)在 java.lang.Thread.run(Unknown Source)

[2012-03-15 18:22:33,265] INFO - BpelServerImpl - Registered process {http://areasearvice.bpel.bps}AreaService-14. [2012-03-15 18:22:42,282] INFO - CarbonAuthenticationUtil - 'admin' logged in at [2012-03-15 18:22:42,0282] from IP address 143.53.207.235 [2012-03-15 18:23:09,041] ERROR - BpelObjectFactory$BOMSAXErrorHandler - null:file:///D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:88:56:cvc-complex-type.3.2.2: Attribute 'xml:space' is not allowed to appear in element 'bpel:literal'. [2012-03-15 18:23:09,043] WARN - BpelObjectFactory - Validation errors during parsing, continuing due to -Dorg.apache.ode.compiler.failOnValidationErrors=false switch [2012-03-15 18:23:09,046] INFO - BpelC - info: [CompilingProcess] Compiling BPEL process. [2012-03-15 18:23:09,116] INFO - WSDLRegistry - WSDL at file:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/GetLVRandomProxy.wsdl is a duplicate import, your documents should all be in different namespaces (its's not nice but will still work). [2012-03-15 18:23:09,116] INFO - WSDLRegistry - WSDL at file:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/GetLVRandomProxy.wsdl is already imported, this denotes a circular reference. [2012-03-15 18:23:09,134] ERROR - BpelC - file:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:72: error: [CopyToMessageFromNonMessage] Copy to message variable RestProxyPLRequest requires a message for the r-value. [2012-03-15 18:23:09,139] ERROR - BpelC - file:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:95: error: [CopyFromMessageToNonMessage] Copy from message variable RestProxyPLResponse requires a message for the l-value. [2012-03-15 18:23:09,143] ERROR - BPELUploadExecutor - BPEL Process Compilation Failure. org.apache.ode.bpel.compiler.api.CompilationException: error: [CompilationErrors] Compilation completed with 2 error(s): file:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:72: error: [CopyToMessageFromNonMessage] Copy to message variable RestProxyPLRequest requires a message for the r-value. file:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:95: error: [CopyFromMessageToNonMessage] Copy from message variable RestProxyPLResponse requires a message for the l-value. at org.apache.ode.bpel.compiler.BpelCompiler.compile(BpelCompiler.java:815) at org.apache.ode.bpel.compiler.BpelC.compile(BpelC.java:278) at org.apache.ode.bpel.compiler.BpelC.compile(BpelC.java:364) at org.apache.ode.store.DeploymentUnitDir$5.run(DeploymentUnitDir.java:213) at org.apache.ode.utils.InternPool.runBlock(InternPool.java:57) at org.apache.ode.store.DeploymentUnitDir.compile(DeploymentUnitDir.java:210) at org.apache.ode.store.DeploymentUnitDir.compile(DeploymentUnitDir.java:169) at org.wso2.carbon.bpel.ui.fileupload.BPELUploadExecutor.validateBPELPackage(BPELUploadExecutor.java:262) at org.wso2.carbon.bpel.ui.fileupload.BPELUploadExecutor.execute(BPELUploadExecutor.java:101) at org.wso2.carbon.ui.transports.fileupload.AbstractFileUploadExecutor.executeGeneric(AbstractFileUploadExecutor.java:105) at org.wso2.carbon.ui.transports.fileupload.FileUploadExecutorManager$CarbonXmlFileUploadExecHandler.execute(FileUploadExecutorManager.java:392) at org.wso2.carbon.ui.transports.fileupload.FileUploadExecutorManager$FileUploadExecutionHandlerManager.startExec(FileUploadExecutorManager.java:276) at org.wso2.carbon.ui.transports.fileupload.FileUploadExecutorManager.execute(FileUploadExecutorManager.java:125) at org.wso2.carbon.ui.transports.FileUploadServlet.doPost(FileUploadServlet.java:57) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.eclipse.equinox.http.helper.ContextPathServletAdaptor.service(ContextPathServletAdaptor.java:36) at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:111) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:67) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.wso2.carbon.bridge.BridgeServlet.service(BridgeServlet.java:155) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.wso2.carbon.server.TomcatServer$1.invoke(TomcatServer.java:241) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399) at org.apache.coyote.http11.Http11NioProcessor.process(Http11NioProcessor.java:396) at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:356) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1534) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)

推荐答案

我尝试了这个,在这里我提供了一个 BPEL 示例来调用以下代理服务.请从此处找到示例工件.注意 - 您必须从 goodreads 获取 api 密钥并替换为 MyKeyHere.

I tried this and here I have provided a BPEL sample to invoke the following proxy service. Please find the sample artifacts from here. Note - You have to get a api key from goodreads and replace with MyKeyHere.

<proxy name="GetProxy" transports="https http" startOnLoad="true" trace="disable">
        <target>
            <inSequence>
                <log level="full"/>
                <property name="HTTP_METHOD" value="GET" scope="axis2"/>
                <property name="REST_URL_POSTFIX" value="/4776766.xml?key=MyKeyHere" scope="axis2"/>
                <send>
                    <endpoint>
                        <address uri="http://www.goodreads.com/author/list"/>
                    </endpoint>
                </send>
            </inSequence>
            <outSequence>
                <send/>
            </outSequence>
        </target>
    </proxy>

这篇关于如何从 BPS 上的 BPEL 流程调用在 ESB 上运行的 REST 代理服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆