So rufen Sie einen auf dem ESB ausgeführten REST-Proxy-Dienst über einen BPEL-Prozess auf dem BPS auf
Frage
Ich habe BPS eingerichtet und einige BPEL-Prozesse erstellt, mit denen ich Dienste auf dem Anwendungsserver aufrufen kann.Ich habe auf dem ESB einen REST-Proxy-Dienst erstellt, der einen Endpunkt zu einem Labview-Server verwendet.In Labview habe ich einen sehr einfachen REST-Dienst, der jede Sekunde einen Zufallswert generiert.Ich kann wie folgt auf den REST-Dienst zugreifen http://localhost:8000/Maths/random
.Dadurch wird die folgende Ausgabe mit einem Zufallswert generiert
RValue:19.000000
Es ist mir gelungen, über den Gadget-Server auf diesen Dienst zuzugreifen und den Wert mithilfe des WSO2-Grafikframeworks als Diagramm anzuzeigen.
Ich habe jedoch Probleme, wenn ich versuche, denselben Proxy-Dienst über einen BPEL-Prozess aufzurufen.Ich habe vom ESB eine WSDL-Datei für den Proxy-Dienst generiert.Diese WSDL-Datei wird für die Portverbindungen usw. verwendet.Es gibt nur eine Operation, die „Vermittlungsoperation“, ohne Parameter oder Elemente.Ich habe einige der Tutorials für den BPS-Server befolgt, um den Dienst aufzurufen, hatte aber bisher keinen Erfolg.Kann mir jemand zeigen, wie das gemacht werden kann, oder mich auf ein ähnliches Tutorial verweisen?Vielen Dank.
U Raza unten ist der BPS -Fehler, den ich bekomme
[15.03.2012 18:22:33,265] INFO – BpelServerImpl – Registrierter Prozess {http://areasearvice.bpel.bps}AreaService-14.2012-03-15 18: 22: 42,282] Info-CarbonAuthenticationUtil-'Admin' angemeldet unter [2012-03-15 18: 22: 42.0282] aus der IP-Adresse 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 -Komplex-Type.3.2.2:Das Attribut „xml:space“ darf nicht im Element „bpel:literal“ erscheinen.2012-03-15 18: 23: 09.043] WARN-BpelObjectFactory-Validierungsfehler während der Parsen, Fortsetzung aufgrund von -dorg.apache.ode.compiler - BPELC - Info:[CompilingProcess] BPEL-Prozess wird kompiliert.[2012-03-15 18:23:09,116] INFO – WSDLRegistry – WSDL unter Datei:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/GetLVRandomProxy.wsdl ist ein Beim doppelten Import sollten sich Ihre Dokumente alle in unterschiedlichen Namespaces befinden (das ist nicht schön, funktioniert aber trotzdem).[15.03.2012 18:23:09,116] INFO – WSDLRegistry – WSDL unter Datei:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/GetLVRandomProxy.wsdl ist bereits vorhanden importiert, bezeichnet dies einen Zirkelverweis.[15.03.2012 18:23:09,134] FEHLER – BpelC – Datei:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:72:Fehler:[CopyToMessageFromNonMessage] In die Nachrichtenvariable kopieren. RestProxyPLRequest erfordert eine Nachricht für den R-Wert.[15.03.2012 18:23:09,139] FEHLER – BpelC – Datei:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:95:Fehler:[CopyFromMessageToNonMessage] Kopieren aus der Nachrichtenvariablen RestProxyPLResponse erfordert eine Nachricht für den L-Wert.[15.03.2012 18:23:09,143] FEHLER – BPELUploadExecutor – BPEL-Prozesskompilierungsfehler.org.apache.ode.bpel.compiler.api.CompilationException:Fehler:[CompilationErrors] Kompilierung mit 2 Fehlern abgeschlossen:file:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:72:Fehler:[CopyToMessageFromNonMessage] In die Nachrichtenvariable kopieren. RestProxyPLRequest erfordert eine Nachricht für den R-Wert.file:/D:/ESB/WSO2/wso2bps-2.1.0/tmp/work/bpelTemp/1.33183578879275E12/BPELREST/RestfulProxy.bpel:95:Fehler:[CopyFromMessageToNonMessage] Kopieren aus der Nachrichtenvariablen RestProxyPLResponse erfordert eine Nachricht für den L-Wert.unter org.apache.ode.bpel.compiler.bpelcompiler.comPile (bpelcompiler.java:815) unter org.apache.ode.bpel.compiler.bpelc.comPile (bpelc.java:278) unter org.apache.ode.bpel .compiler.bpelc.comPile (bpelc.java:364) unter org.apache.ode.store.deploymentunitdir $ 5.run (Deploymentunitdir.java:213) unter org.apache.ode.utils.internpool.runbllock (praktikum.java:: 57) unter org.apache.ode.store.deploymentunitdir.comPile (DeploymentUnitdir.java:210) unter org.apache.ode.store.deploymentunitdir.comPile (Deploymentunitdir.java:169) unter Org.wso2.carbon.bpel.Bpel.Bpel.Bpel.Bpel.Bpel.Bpel.Uiii: .FileUpload.bpeluploadexecutor.ValidateBpelpackage (Bpeluploadexecutor.java:262) bei org.wso2.carbon.bpel.ui.FileUpload.bpelaDexecutor.execute (bpeluploadexcutor. pload.abstractFileUploadexecutor .executegeneric (AbstractFileUploadexecutor.java:105) bei org.wso2.carbon.ui.transports.FileUpload.FileUploadexecutorManager $ carbonxmlFileUploadexechandler.execute (FileuadexcutorcutorcutorcutorManagon.java.java.java:392) or oder oruploadorManagonagerageragerageragerageragerageragerageragerageragerageragbonagerageragebonager -A -Sow -Otex -Verfassungsstätte. .FileUploadexecutorManager $ fileUploadexecutionHandlerManager .StartExec (FileUploadexecutorManager.java:276) unter org.wso2.carbon.ui.transports.FileUpload.FileUploadexecutorManager.execute (FileUploadexecutorman.java:125). .Java : 57) at javax.servlet.http.httpServlet.service (httpservlet.java:641) unter javax.servlet.http.httpserservlet.Service (htttpserd.java:722) unter org.ecliplets.helttplettplettplettplettplettpletplettp. 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) bei javax.servlet.http.httpserlet.Service (httpervlet.java:722) AT Oorg.WSOSSOSCARBONBON. .Bridge.BridgeServlet.Service (BridgeServlet.java:155) at javax.servlet.http.httpServlet.Service (httpServlet.java:722) at org.apache.catalina.core.ApplicationFilterchain.internelchain.Internelchain.Internelter.internelter.internelter.internelter.internilter.Internelter.Internelter.Internelter (ApplicationFilterchain.Interchain.intern.InterneL. 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) unter org.apache.catalina.authenticator.authenticatorbase .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) bei org.apache.catalina.core.Standardenginevalve.invoke (Standardginevalve.java:118) unter org.apache.catalina.connector .PROCESS (http11nioprocessor.java:396) at org.apache.coyote.http11.http11nioprotocol $ http11ConnectionHandler.process (http11nioprotocol.java:356) bei org.apache.tomcat.util.nio.356) at org.apache. .Java : 1534) unter java.util.concurrent.threadpoolexecutor $ wormax.runtask (unbekannte Quelle) unter java.util.concurrent.threadpoolexecutor $ Worker.run (Unbekannte Quelle) unter java.lang.thread.run (Unbekannte Quelle) (Unbekannte Quelle)
Lösung
Ich habe es versucht und hier ein BPEL-Beispiel zum Aufrufen des folgenden Proxy-Dienstes bereitgestellt.Die Beispielartefakte finden Sie unter Hier.Hinweis – Sie müssen einen API-Schlüssel von erhalten Goodreads und durch ersetzen 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>
Andere Tipps
Hier ist eine ESB-Proxy-Konfiguration, die bei mir für eine GET-Anfrage funktioniert hat.
<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>
Dies ist für eine POST-Anfrage
<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>
Wollten Sie übrigens sagen, dass Sie über Gadget Server erfolgreich auf diesen Proxy-Dienst zugegriffen haben, aber nicht über BPS?Können Sie die ESB-Proxy-Konfiguration und die Fehlerprotokolle veröffentlichen, die Sie von BPS erhalten haben?