Как вызвать службу REST Proxy, работающую на ESB, из процесса BPEL на BPS - PullRequest
2 голосов
/ 14 марта 2012

Я установил BPS и создал несколько процессов BPEL, которые я могу использовать для вызова служб на сервере приложений.Я создал прокси-службу REST на ESB, которая использует конечную точку для сервера Labview.В Labview у меня есть очень простой сервис REST, который генерирует случайное значение каждую секунду.Я могу получить доступ к сервису REST следующим образом http://localhost:8000/Maths/random.Это приводит к следующему выводу со случайным значением

RValue:19.000000

Мне удалось получить доступ к этому сервису через сервер гаджетов и отобразить значение в виде графика с использованием графической структуры WSO2.

Но у меня возникают проблемы при попытке вызвать ту же прокси-службу из процесса BPEL.Я сгенерировал файл wsdl для службы прокси из ESB.Этот файл wsdl используется для соединений с портами и т. Д. Он имеет только одну операцию - посредническую операцию без параметров или элементов.Я следовал нескольким учебникам для сервера BPS, чтобы вызвать службу, но пока не добился успеха.Может кто-нибудь показать мне, как это можно сделать, или указать мне аналогичный учебник?Большое спасибо.

U Raza ниже - ошибка BPS, которую я получаю

[2012-03-15 18: 22: 33,265] INFO - BpelServerImpl - Зарегистрированный процесс {http://areasearvice.bpel.bps}AreaService-14. [2012-03-15 18: 22: 42,282] INFO - CarbonAuthenticationUtil - администратор вошел в систему [2012-03-15 18: 22: 42,0282] с IP-адреса 143.53.207.235 [2012-03-1518: 23: 09,041] ОШИБКА - BpelObjectFactory $ BOMSAXErrorHandler - null: file: /// D: /ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel: 88:: cvc-complex-type.3.2.2: Атрибут «xml: space» не может появляться в элементе «bpel: literal».[2012-03-15 18: 23: 09,043] ПРЕДУПРЕЖДЕНИЕ - BpelObjectFactory - ошибки проверки во время синтаксического анализа, продолжающиеся из-за -Dorg.apache.ode.compiler.failOnValidationErrors = false switch [2012-03-15 18: 23: 09,046] INFO- BpelC - информация: [CompilingProcess] Процесс компиляции BPEL.[2012-03-15 18: 23: 09,116] ИНФОРМАЦИЯ - WSDLRegistry - WSDL в файле: / D: /ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/GetLVRandomProxy.wsdl являетсяимпорт дубликатов, все ваши документы должны находиться в разных пространствах имен (это нехорошо, но все равно будет работать).[2012-03-15 18: 23: 09,116] ИНФОРМАЦИЯ - WSDLRegistry - WSDL в файле: / D: /ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/GetLVRandomProxy.wsdl уже существуетимпортировано, это обозначает циклическую ссылку.[2012-03-15 18: 23: 09,134] ОШИБКА - BpelC - файл: / D: /ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel: 72: ошибка: [CopyToMessageFromNonMessage] Копирование в переменную сообщения RestProxyPLRequest требует сообщения для значения r.[2012-03-15 18: 23: 09,139] ОШИБКА - BpelC - файл: / D: /ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel: 95: ошибка: [CopyFromMessageToNonMessage] Для копирования из переменной сообщения RestProxyPLResponse требуется сообщение для l-значения.[2012-03-15 18: 23: 09,143] ОШИБКА - BPELUploadExecutor - Ошибка компиляции процесса BPEL.org.apache.ode.bpel.compiler.api.CompilationException: ошибка: [CompilationErrors] Компиляция завершена с двумя ошибками: файл: / 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 требуется сообщение для сообщениязначение.в 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.BPELUploadExecj.exEL101 из) в org.wso2.carbon.ui.transports.fileupload.FileUploadExecutorManager $ FileUploadExecutionHandlerManager.startExec (FileUploadExecutorManager.java:276) в org.wso2.carbon.ui.transports.fileupload.FileUageranloadExj (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) или в.http.helper.ContextPathServletAdaptor.service (ContextPathServletAdaptor.java:36) в org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest (ServletRegistration.java:90) в org.epper.quipxl.ProxyServlet.processAlias ​​(ProxyServlet.java:111) по адресу org.eclipse.equinox.http.servlet.internal.ProxyServlet.service (ProxyServlet.java:67) по адресу javax.servlet.http.HttpServlet.ervlet_service) в org.wso2.carbon.bridge.BridgeServlet.service (BridgeServlet.java:155) в javax.servlet.http.HttpServlet.service (HttpServlet.java:722) в org.apache.catalina.core.ApplicationFilterDohain. (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 (athenticator).apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:164) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:100) в org.wso2.carbon.server.TomcatkeverTomcatServer.java:241) в org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:563) в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:118ache) или org,: 356) в org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1534) в java.util.concurrent.ThreadPoolИсполнитель $ Worker.runTask (неизвестный источник) на java.util.concurrent.ThreadPoolExecutor $ Worker.run (неизвестный источник) на java.lang.Thread.run (неизвестный источник)

Ответы [ 2 ]

4 голосов
/ 22 марта 2012

Я попробовал это, и здесь я предоставил образец BPEL для вызова следующей прокси-службы. Пожалуйста, найдите образцы артефактов от здесь . Примечание. Необходимо получить ключ API от goodreads и заменить его на 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>
0 голосов
/ 15 марта 2012

Вот конфигурация прокси ESB, которая работала для меня для запроса 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>

Это для 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>

Кстати, вы хотели сказать, что вы успешно получили доступ к этой прокси-службе через Gadget Server, но не через BPS? Можете ли вы опубликовать конфигурацию прокси-сервера ESB и журналы ошибок, полученные с BPS?

...