Knowledge Base > Automation Engine und Zielsysteme > Java EE/JMX > SOAP-Meldung über MBean senden

SOAP-Nachrichten mit Hilfe von MBeans schicken

Hier ist ein Beispiel für eine SOAP-Nachricht, um Aktienkurse abzufragen.

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:getQuote soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="urn:xmethods-delayed-quotes">
<symbol xsi:type="xsd:string">IBM</symbol>
</ns1:getQuote></soapenv:Body>
</soapenv:Envelope>

Die SOAP-Nachricht soll mit der folgenden SOAP Aktion geschickt werden: "urn:xmethods-delayed-quotes#getQuote"  

Die URL des Webservices lautet: http://services.xmethods.net/soap

Ein MBean kann verwendet werden, um diese SOAP-Nachricht zu senden. Das MBean benötigt mindestens die Java Version 5. Fügen Sie zuerst das MBean dem classpath des Agenten hinzu:

  1. Kopieren Sie die Datei soapmbean.jar in das Verzeichnis des JMX-Agenten.
  2. Starten Sie den JMX-Agenten mit der Datei soapmbean.jar im classpath.
    java -cp soapmbean.jar;ucxjjmx.jar com/uc4/ex/jmx/UCXJMX

Legn Sie einen JMX-Job an und fügen Sie die folgende Zeile in die Registerkarte Script ein:

JMX_CREATE_MBEAN EXISTS="IGNORE",CLASSNAME="com.uc4.ex.jmx.soap.SOAP",NAME="uc4.com:name=SOAP"

Starten Sie den Job. Im MBean-Browser wird nun ein MBean namens "SOAP" aufgelistet.

Als nächstes ist die JCL für die Nutzung des SOAP MBeans festzulegen:

JMX_CREATE_MBEAN EXISTS="IGNORE",CLASSNAME="com.uc4.ex.jmx.soap.SOAP",NAME="uc4.com:name=SOAP"
JMX_COMPOSITE_ADD KEY="1",VALUE='<?xml version="1.0" encoding="UTF-8"?>',NAME="s"
JMX_COMPOSITE_ADD KEY="2",VALUE='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ',NAME="s"
JMX_COMPOSITE_ADD KEY="3",VALUE='xmlns:xsd="http://www.w3.org/2001/XMLSchema" ',NAME="s"
JMX_COMPOSITE_ADD KEY="4",VALUE='xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">',NAME="s"
JMX_COMPOSITE_ADD KEY="5",VALUE="<soapenv:Body><ns1:getQuote ",NAME="s"
JMX_COMPOSITE_ADD KEY="6",VALUE='soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" ',NAME="s"
JMX_COMPOSITE_ADD KEY="7",VALUE='xmlns:ns1="urn:xmethods-delayed-quotes">',NAME="s"
JMX_COMPOSITE_ADD KEY="8",VALUE='<symbol xsi:type="xsd:string">IBM</symbol>',NAME="s"
JMX_COMPOSITE_ADD KEY="9",VALUE="</ns1:getQuote></soapenv:Body></soapenv:Envelope>",NAME="s"
JMX_INVOKE OPERATIONNAME="sendSOAP",MBEAN="uc4.com:name=SOAP",PARAMS='s,"urn:xmethods-delayed-quotes#getQuote",http://services.xmethods.net/soap'

Die erste Scriptzeile lädt das MBean sofern dies noch nicht der Fall ist. Die JMX_COMPOSITE_ADD-Anweisungen beinhalten Zeile für Zeile die SOAP Nachricht. Der Parameter KEY= enthält die Zeilennummer. Nachdem die SOAP Nachricht zusammengestellt worden ist, wird sie der Operation "sendSOAP" (JMX_INVOKE) als erster Parameter übergeben. Der zweite Parameter enthält die SOAP Aktion und der dritte Parameter die URL an die der SOAP Request gesendet werden soll.

Führen Sie den Job aus. Der Jobreport zeigt die Antwortnachricht an.

Sie können die XPath Anweisung verwenden, um einen einzelnen Wert auszulesen. Fügen Sie dazu eine neue Scriptzeile mit dem Script-Sprachmittel JMX_COMPOSITE_ADD ein, die als KEY= die Anweisung "XPATH" und als VALUE= den gesuchten Wert enthält (siehe zweite Scriptzeile). Das Script sieht nun wie folgt aus:

JMX_CREATE_MBEAN EXISTS="IGNORE",CLASSNAME="com.uc4.ex.jmx.soap.SOAP",NAME="uc4.com:name=SOAP"
JMX_COMPOSITE_ADD KEY="XPATH",VALUE="//Result",NAME="s"
JMX_COMPOSITE_ADD KEY="1",VALUE='<?xml version="1.0" encoding="UTF-8"?>',NAME="s"
JMX_COMPOSITE_ADD KEY="2",VALUE='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ',NAME="s"
JMX_COMPOSITE_ADD KEY="3",VALUE='xmlns:xsd="http://www.w3.org/2001/XMLSchema" ',NAME="s"
JMX_COMPOSITE_ADD KEY="4",VALUE='xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">',NAME="s"
JMX_COMPOSITE_ADD KEY="5",VALUE="<soapenv:Body><ns1:getQuote ",NAME="s"
JMX_COMPOSITE_ADD KEY="6",VALUE='soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" ',NAME="s"
JMX_COMPOSITE_ADD KEY="7",VALUE='xmlns:ns1="urn:xmethods-delayed-quotes">',NAME="s"
JMX_COMPOSITE_ADD KEY="8",VALUE='<symbol xsi:type="xsd:string">IBM</symbol>',NAME="s"
JMX_COMPOSITE_ADD KEY="9",VALUE="</ns1:getQuote></soapenv:Body></soapenv:Envelope>",NAME="s"
JMX_INVOKE OPERATIONNAME="sendSOAP",MBEAN="uc4.com:name=SOAP",PARAMS='s,"urn:xmethods-delayed-quotes#getQuote",http://services.xmethods.net/soap'

Basierend auf dem Beispielscript zeigt der Jobreport jetzt einen Wert.

Sie können Teile der SOAP Nachricht auch über Scriptvariablen versorgen. Im folgenden Beispiel wird ein Wert über eine :READ-Maske eingelesen:

Registerkarte Pre-Script:

:READ &SYMBOL#,"IBM,SAP,ORCL","Please choose one","IBM"

Registerkarte Script:

Die Scriptvariable &SYMBOL# wird in der 10. Zeile verwendet:

JMX_CREATE_MBEAN EXISTS="IGNORE",CLASSNAME="com.uc4.ex.jmx.soap.SOAP",NAME="uc4.com:name=SOAP"
JMX_COMPOSITE_ADD KEY="XPATH",VALUE="//Result",NAME="s"
JMX_COMPOSITE_ADD KEY="1",VALUE='<?xml version="1.0" encoding="UTF-8"?>',NAME="s"
JMX_COMPOSITE_ADD KEY="2",VALUE='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" ',NAME="s"
JMX_COMPOSITE_ADD KEY="3",VALUE='xmlns:xsd="http://www.w3.org/2001/XMLSchema" ',NAME="s"
JMX_COMPOSITE_ADD KEY="4",VALUE='xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">',NAME="s"
JMX_COMPOSITE_ADD KEY="5",VALUE="<soapenv:Body><ns1:getQuote ",NAME="s"
JMX_COMPOSITE_ADD KEY="6",VALUE='soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" ',NAME="s"
JMX_COMPOSITE_ADD KEY="7",VALUE='xmlns:ns1="urn:xmethods-delayed-quotes">',NAME="s"
JMX_COMPOSITE_ADD KEY="8",VALUE='<symbol xsi:type="xsd:string">&SYMBOL#</symbol>',NAME="s"
JMX_COMPOSITE_ADD KEY="9",VALUE="</ns1:getQuote></soapenv:Body></soapenv:Envelope>",NAME="s"
JMX_INVOKE OPERATIONNAME="sendSOAP",MBEAN="uc4.com:name=SOAP",PARAMS='s,"urn:xmethods-delayed-quotes#getQuote",http://services.xmethods.net/soap'

 

 


Automic Documentation - Tutorials - Automic Blog - Resources - Training & Services - Automic YouTube Channel - Download Center - Support

Copyright © 2016 Automic Software GmbH