Como invocar um serviço REST Proxy em execução no ESB a partir de um processo BPEL no BPS

StackOverflow https://stackoverflow.com//questions/9707851

  •  14-12-2019
  •  | 
  •  

Pergunta

Configurei o BPS e criei alguns processos BPEL que posso usar para invocar serviços no servidor de aplicativos.Eu criei um serviço proxy REST no ESB que usa um endpoint para um servidor Labview.No Labview eu tenho um serviço REST muito básico que gera um valor aleatório a cada segundo.Posso acessar o serviço REST da seguinte maneira http://localhost:8000/Maths/random.Isso gera a seguinte saída com um valor aleatório

RValue:19.000000

Tive sucesso ao acessar este serviço através do servidor Gadget e exibir o valor como um gráfico usando a estrutura gráfica WSO2.

Mas estou tendo problemas ao tentar invocar o mesmo serviço de proxy de um processo BPEL.Gerei um arquivo wsdl para o serviço de proxy do ESB.Este arquivo wsdl é usado para conexões de porta, etc.Possui apenas uma operação, a operação "mediada", sem parâmetros ou elementos.Segui alguns tutoriais do servidor BPS para invocar o serviço, mas não tive sucesso até agora.Alguém pode me mostrar como isso pode ser feito ou me indicar um tutorial semelhante?Muito obrigado.

U Raza abaixo está o erro BPS que eu recebo

[2012-03-15 18:22:33,265] INFO - BpelServerImpl - Processo registrado {http://areasearvice.bpel.bps}AreaService-14.2012-03-15 18: 22: 42.282] Informações-CarbonauthenticationUtil-'Admin' conectado em [2012-03-15 18: 22: 42.0282] do endereço IP 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:O atributo 'xml:space' não pode aparecer no elemento 'bpel:literal'.2012-03-15 18: 23: 09.043] WARN-BPELOBJETO-Erros de validação durante a análise, continuando devido a -dorg.apache.ode.compiler.failonValidationErrors = False Switch [2012-03-15 18: 23: 09,046] - BPELC - Info:[CompilingProcess] Compilando processo BPEL.[2012-03-15 18:23:09,116] INFO - WSDLRegistry - WSDL no arquivo:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/GetLVRandomProxy.wsdl é um importação duplicada, seus documentos deverão estar todos em namespaces diferentes (não é legal, mas ainda funcionará).[2012-03-15 18:23:09,116] INFO - WSDLRegistry - WSDL no arquivo:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/GetLVRandomProxy.wsdl já está importado, isso denota uma referência circular.[2012-03-15 18:23:09,134] ERRO - BpelC - arquivo:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:72:erro:[CopyToMessageFromNonMessage] Copiar para a variável de mensagem RestProxyPLRequest requer uma mensagem para o valor r.[2012-03-15 18:23:09,139] ERRO - BpelC - arquivo:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:95:erro:[CopyFromMessageToNonMessage] Copiar da variável de mensagem RestProxyPLResponse requer uma mensagem para o valor l.[2012-03-15 18:23:09,143] ERRO - BPELUploadExecutor - Falha na compilação do processo BPEL.org.apache.ode.bpel.compiler.api.CompilationException:erro:[CompilationErrors] Compilação concluída com 2 erros:arquivo:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:72:erro:[CopyToMessageFromNonMessage] Copiar para a variável de mensagem RestProxyPLRequest requer uma mensagem para o valor r.arquivo:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:95:erro:[CopyFromMessageToNonMessage] Copiar da variável de mensagem RestProxyPLResponse requer uma mensagem para o valor l.em org.apache.ode.bpel.compiler.bpelcompiler.compile (bpelcompiler.java:815) em org.apache.ode.bpel.compiler.bpelc.compile (bpelc.java:278) em org.apache.ode.bpile .compiler.bpelc.compile (bpelc.java:364) em org.apache.ode.store.deploymentUnitdir $ 5.run (implantunitdir.java:213) em org.apache.ode.utils.internPool.unclock (internacional) 57) em org.apache.ode.store.deploymentunitdir.compile (implantununitdir.java:210) em org.apache.ode.store.deploymentUnitdir.compile (Deplementunitdir.java:169) em org.wso2.carbon.pelbon.pel.pel.java:169) em org.wso2.carbon.pel.pel.pel.java:169) em org.wso2.carbon.pel.pel.pel.java.java:169) em org.wso2.carbon.pelbon.pel.pel.java:169) em org.wso2.carbon.pel.pel.pel.java:169) em org.wso2.carbon.pel.pel.pel.wo .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 .ExecuteGenérico (AbstractFileUploadexecutor.java:105) em org.wso2.carbon.ui.transports.fileupload.fileuploadexecutorManager $ carbonxmlfileUplexechandler.execute (fileUploadexecutorManager.javaGa.Java.JavaMaRexandler.execute (fileUPLOADEXODORMAGRAGER.JAVA.JAVA: ad.FileUploadexecutomManager $ 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) em javax.servlet.http.httpServlet.service (httpServlet.java:641) em javax.servlet.http.httpServlet.Service (httpslet.java:722) em oug.eclipse.Emetice serviço (contextPathPatherLeTataptor.java:36) em org.eclipse.equinox.http.servlet.internal.servletregistration.handlerequest (servletRegistration.java:90) em org.eclipse.equinOrv.ysTlet.iMSTEL.IMNALNALSLENSLENSLENSAL.PROTSTEL.IMNALMASNIMASMAS.PROTSTEL.IMERTALMENLILSEL.YSTRETLIMAS.IMERTALMENLIMAS.PROTSTLIAS.IMERTAL.INMALSLIMAS.PROTSTLIAS.IMERTAL.IMERTAL.INMASNIDAS. java: 111) em org.eclipse.equinox.http.servlet.internal.proxyServlet.service (proxyServlet.java:67) em javax.servlet.http.httpslet.service (httpslet.java:722) .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) em org.apache.catalina.core.standardwraptalve.invoke (standardwraveralve.java:240) em org.apache.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) em org.wso2.carbon.server.tomcatserver $ 1.invoke (tomcatserver.java:241) em org.apache.catalina.Valves.accessLogvalve.inVoke (AccessTeLaGache.catalina.VALVES.AccessLogvalve.inVoke) 563) em org.apache.catalina.core.standardEngineValVe.invoke (StandardEngineValVe.java:118) em org.apache.catalina.connector.coyoteadapter.service (coyoteadapter.java:39) em ouspacte.Coyoxer (coyoteadapter.java:39) em ouspache.Coyoxer (coyoteadapter.java:399) em ouspache.Coyoxer (coyoteadapter.java:39) em ouspache.Coyoxer (coyoteadapter.java:399) em ouspache.CoyoTice .process (http11nioprocessor.java:396) em org.apache.coyote.http11.http11nioProtocol $ http11ConnectionHandler.process (http11nioprotocol.java:356) em org.apcheRom.tache.tache.TrocAct.Trocact (http11nioprotocol.java:356) em org.apcheRom. ioendpoint.java : 1534) em java.util.concurrent.threadpoolExecutor $ trabalhador.runtaSk (fonte desconhecida) em java.util.concurrent.threadpoolExecutor $ trabalhador.run (fonte desconhecida) em java.lang.thread.run (fonte desconhecida)

Foi útil?

Solução

Eu tentei isso e aqui forneci um exemplo de BPEL para invocar o seguinte serviço de proxy.Encontre os artefatos de amostra de aqui.Nota - Você precisa obter uma chave de API de boas leituras e substitua por 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>

Outras dicas

Aqui está uma configuração de proxy ESB que funcionou para mim para uma solicitação GET.

<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>

Isto é para uma solicitação POST

<proxy name="TestProxy" transports="https http" startOnLoad="true" trace="disable">
    <target>
        <inSequence>
            <log level="full"/>
            <property name="messageType" value="application/xml" scope="axis2"/>
            <property name="ContentType" value="application/xml" scope="axis2"/>
            <send>
                <endpoint>
                    <address uri="http://localhost:8080/TestServlet/emal/xml_api"/>
                </endpoint>
            </send>
        </inSequence>
        <outSequence>
            <property name="messageType" value="text/xml" scope="axis2"/>
            <property name="ContentType" value="text/xml" scope="axis2"/>
            <send/>
        </outSequence>
    </target>
</proxy>

A propósito, você quis dizer que acessou com sucesso esse serviço de proxy via Gadget Server, mas não via BPS?Você pode postar a configuração do proxy ESB e os logs de erros obtidos do BPS?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top