Web-Services


Zurück zu Verwalten von Textbausteinen...

Dieser Abschnitt richtet sich an Programmierer, die von entfernten Systemen auf todo4teams zugreifen möchten.
todo4teams stellt eine Zugriffsmöglichkeit für entfernte Systeme mittels Web Services bereit. Diese werden als SOAP- (Simple Object Access Protocol) Services an­geboten. Der SOAP-Standard wird von den meisten aktuellen Betriebs­systemen und vielen Programmiersprachen unterstützt.

Funktionen

todo4teams stellt folgende Funktionen über die Webservices bereit:

hello
public java.lang.String hello()
newJob
public int newJob(int addressedGroupId,
                  java.lang.String title,
                  java.lang.String description,
                 int minutes,
                 int ownerId)
          throws java.rmi.RemoteException
newPriorityJob
public int newPriorityJob(int addressedGroupId,
                          java.lang.String title,
                          java.lang.String description,
                         int minutes,
                         int ownerId,
                         int priority)
          throws java.rmi.RemoteException
updateJob
public void updateJob(int jobId,
                     int addressedGroupId,
                      java.lang.String title,
                      java.lang.String description,
                     int minutes)
           throws java.rmi.RemoteException, java.lang.Exception
getJobStatus
public java.lang.String getJobStatus(int jobId)
                       throws java.rmi.RemoteException, java.lang.Exception
deleteJob
public boolean deleteJob(int jobId)
              throws java.rmi.RemoteException, java.lang.Exception
newJobWithMetaData
public int newJobWithMetaData(int addressedGroupId,
                              java.lang.String title,
                              java.lang.String description,
                             int minutes,
                             int ownerId,
                             int metaDataId,
                              java.util.Map<java.lang.String,
                              java.lang.Object> values)
         throws java.rmi.RemoteException
newEmailFormJob
public int newEmailFormJob(int addressedGroupId,
                           java.lang.String title,
                           java.lang.String description,
                          int minutes,
                          int ownerId,
                          int metaDataId,
                           java.util.Map<java.lang.String,java.lang.Object> values,
                          int priority,
                           java.lang.String replyFromEmail,
                           java.lang.String replyToEmail)
          throws java.rmi.RemoteException

WSDL-Deskriptor

Die Schnittstelle wird vollständig durch den WSDL-Deskriptor beschrieben, der über die URL
http:~/~/<Todoserver>:8080/TodoServer/services/TodoInterface?wsdl

abgerufen werden kann.

Client-Implementierungen

Mit Hilfe des WSDL-Deskriptors verringert sich die Client-seitige Implementierung in der Regel auf wenige Zeilen. Auf den folgenden Seiten sind kurze Beispiele für die Implementierungen in verschiedenen Programmiersprachen aufgelistet.

Microsoft .NET

Die Entwicklungsumgebung Microsoft Visual Studio .NET bringt das Werkzeug wsdl.exe mit, mit dessen Hilfe sich die Client-seitige Implementierung automatisieren lässt:

Der Aufruf
wsdl.exe /language:VB http:~/~/<Todoserver>:8080/TodoServer/services/TodoInterface?wsdl
erzeugt in der Datei RpcMethodService.vb den kompletten Client-Code. Im Hauptprogramm nutzen Sie die Schnittstelle dann so:
d = New RpcMethodsService
jobid = d.newJob(76, "aus Visual Basic", "Eine Beschreibung", 45, 39))
status = d.getJobStatus(jobid)

Wenn Sie eine Implemtierung in C# wünschen, rufen Sie
wsdl.exe /language:CS http:~/~/<Todoserver>:8080/TodoServer/services/TodoInterface?wsdl##
auf, und verfahren entsprechend.

PHP

Das Beispiel verzichtet auf das Abfangen von SOAP-Exceptions, was im Echtbetrieb dringend zu implementieren ist. Es benötigt die Bibliothek NuSOAP (siehe http://sourceforge.net/projects/nusoap/).
require ('lib/nusoap.php');
$serverurl = 'http:~/~/<Todoserver>:8080/TodoServer/services/TodoInterface?wsdl';
$client = new soapclient($serverurl, true);
$param = array (
'addressedGroupId' => 22, ~/~/ ID der Adressierten Gruppe
'title' => 'Beispiel-Titel',
'description' => 'Ein Beispiel-Text',
'minutes' => 45,
'ownerId' => 39 ~/~/ ID des Besitzers);
$result = $client->call('newJob', $param, '', '', false, true);

{{/code}}

Java

Verwenden Sie die Bibliothek Axis (siehe http://ws.apache.org/axis/). Fügen Sie die Axis-Bibliotheken in den Classpath und rufen Sie
java org.apache.axis.wsdl.WSDL2Java -o . "http:~/~/<Todoserver>:8080/TodoServer/services/TodoInterface?wsdl"
auf. Im lokalen Verzeichnis werden nun die benötigten Schnittstellendateien im Paket com.proxemo.Todo.service erzeugt.

Eine Service-Aufruf erzeugen Sie dann nach diesem Vorbild:
package com.proxemo.Todo.services;
public class TestClient{
public static void main(String args[]){
try{
    RpcMethods methods = new RpcMethodsServiceLocator().getTodoInterface();
   int id = methods.newJob(76, "ein SOAP-Job","mit einer Beschreibung", 25, 39);
  }
  catch(RemoteException re){
   System.out.println("Remote-Exception: "+re.getMessage());
} catch(Exception e){
    e.printStackTrace();}
}
}

Weiter zu Verwalten von Formularen...

     

Unterseiten