Vorheriges Thema: Tipps für SOAP-Webservices-Clients

Nächstes Thema: Konfiguration der SOAP Webservices

Java-Clients

In "TableOfContents.doc" unter "$NX_ROOT/samples/sdk/websvc" sind mehrere Java-Beispielprogramme aufgelistet.

Jedes Beispielprogramm enthält Hinweise zur Kompilierung und Ausführung anhand der Skriptdateien "run_java_test_bat.txt" (Windows) bzw. "run_java_test_sh.txt" (UNIX). Diese Skripts zeigen, wie "org.apache.axis.wsdl.WSDL2Java" zum Generieren der clientseitigen Stub-Dateien für CA SDM-Webservices verwendet wird.

Wenn Axis 1.4 verwendet wird, ist der Parameter "-w" erforderlich, damit die Stub-Dateien korrekt generiert werden. Wenn WSDL2Java entsprechend den Anweisungen ausgeführt wird, werden die Stub-Dateien im Unterverzeichnis "com/ca/www/UnicenterServicePlus/ServiceDesk" generiert. Die folgenden Dateien werden generiert:

Importieren Sie diese Klassen mit der folgenden Anweisung:

import com.ca.www.UnicenterServicePlus.ServiceDesk.*;

Viele Webservices-Methoden haben Parameter vom Typ "ArrayOfString", einer proprietären Klasse. Zum Beispiel sind das "attrVals" der "createRequest()"-Methode, "propertyValues" und Attributparameter "ArrayOfString"-Parameter.

Um die Werte in einer "ArrayOfString"-Variablen festzulegen, instanziieren Sie die Variable, und verwenden Sie dann "setString()" folgendermaßen:

ArrayOfString attrVals = new ArrayOfString();
attrVals.setString(new String[]{"customer", customerHandle, "description", "description text"});

So wird die Variable auf leer festgelegt:

attrVals.setString(new String[0]);

Verwenden Sie eine Variable des Typs "ListResult", einer weiteren proprietären Klasse, als Rückgabewert für die Listenmethoden "doQuery()", "getRelatedList()", "getNotificationsForContact()", "getPendingChangeTaskListForContact()" und "getPendingIssueTaskListForContact()". Ein "ListResult" enthält "listHandle"- und "listLength"-Elemente, die wie im Beispiel gezeigt mit "getListHandle()" und "getListLength()" abgerufen werden können:

ListResult doQueryResult = new ListResult();
doQueryResult = USPSD.doQuery(sid, "iss", "active = 1");
int listHandle = doQueryResult.getListHandle();
int listLength = doQueryResult.getListLength();

Die "getListValues()"-Methode verwendet "listHandle", wobei die Werte aus einer Teilmenge der Liste abgerufen werden.

Der Parameter "Handles" der "freeListHandles()"-Methode ist ein" ArrayOfInt", eine weitere proprietäre Klasse. Rufen Sie "freeListHandles()" anhand des "ListHandle" aus einem "ListResult" auf:

ArrayOfInt handleList = new ArrayOfInt();
handleList.setInteger(new java.lang.Integer []{ new java.lang.Integer(listHandle) });
USPSD.freeListHandles(sid, handleList);

Einige Methoden haben Pass-By-Reference-Parameter des Typs "javax.xml.rpc.holders.StringHolder". So hat z. B. "createRequest()" zwei Parameter diesen Typs, "NewRequestHandle" und "NewRequestNumber".

StringHolder NewRequestNumber = new StringHolder();
StringHolder NewRequestHandle = new StringHolder();
String result;
result = USPSD.createRequest(sid, creatorHandle, attrVals, propertyValues, template, attributes, NewRequestHandle, NewRequestNumber);

Das Handle und die Referenznummer (ref_num) der Anforderung können dem "NewRequestHandle.value" bzw. dem "NewRequestNumber.value" entnommen werden.