Beispiel: Generieren von SOAP-Webservices (Java)

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Implementieren von SOAP-Webservices >

Beispiel: Generieren von SOAP-Webservices (Java)

In diesem Beispiel wird gezeigt, wie Sie mit MapForce einen SOAP-Webservice generieren. Sie werden anhand des MapForce-Beispielprojekts unter <Dokumente>\Altova\MapForce2019\MapForceExamples\\Query Person database.mfp Java-Programmcode generieren. In diesem Projekt ist ein SOAP-Webservice implementiert, der zwei Operationen bereitstellt: getPerson und putPerson. Dieser Webservice kommuniziert im Hintergrund mit einer Microsoft Access-Datenbank, um über die obigen Operationen Personendaten abzurufen bzw. hinzuzufügen. Ein Beispiel zum Erstellen solcher Projekte in MapForce finden Sie unter Erstellen von SOAP-Webservice-Projekten anhand von WSDL-Dateien.

 

In diesem Beispiel wird Java-Code mit Hilfe von Java 7 und Apache Ant kompiliert. Die .aar-Datei wird auf eine Apache Tomcat-Server bereitgestellt, auf dem Axis2 installiert ist.

 

In diesem Beispiel wird aus Gründen der Einfachheit eine Webserver-Minimalkonfiguration verwendet. In einer Produktionsumgebung müssen Sie unter Umständen abhängig von Webserver, Sicherheitsvorgaben und anderen Faktoren eine andere Konfiguration verwenden.

 

In diesem Beispiel wird zum Aufrufen des SOAP-Webservice die XMLSpy Enterprise Edition verwendet. Wenn Sie XMLSpy nicht installiert haben, benötigen Sie einen SOAP-Client, um den Webservice zu testen oder müssen Programmcode schreiben, der den Webservice aufrufen kann.

 

Anmerkung:Wie bereits erwähnt, wird in diesem Webservice-Beispiel eine Microsoft Access-Datenbank aufgerufen. Bei Java 7 kann die Verbindung zur Access-Datenbank über die in Java inkludierte ODBC-JDBC Bridge hergestellt werden. Die ODBC-JDBC Bridge wurde jedoch in Java 8 entfernt und Oracle empfiehlt die Verwendung der vom Anbieter bereitgestellten JDBC-Treiber, siehe http://docs.oracle.com/javase/7/docs/technotes/guides/jdbc/bridge.html. Um dieses Beispiel daher in einer Umgebung ab Java 8 ausführen zu können, müssen Sie JDBC-Treiber von Drittanbietern, die eine Verbindung zu einer Microsoft Access-Datenbank ermöglichen, finden und installieren.

 

 

Schritt 1: Vorbereiten der query.wsdl-Datei

Dieser Beispiel-Webservice stammt aus der folgenden WSDL-Datei: <Dokumente>\Altova\MapForce2019\MapForceExamples\query.wsdl. Standardmäßig sind die Service-Details in der Datei query.wsdl für C# und Java in zwei separaten Abschnitten definiert, von denen einer auskommentiert ist. Bevor Sie daher Java-Code generieren, gehen Sie zum folgenden Abschnitt in der Datei query.wsdl und stellen Sie sicher, dass dieser auskommentiert ist:

 

  <!--service name="WS2DB">
     <port name="WS2DBSoapPort" binding="tns:WS2DBSoapBinding">
        <soap:address location="http://localhost/WS2DB/WS2DB.asmx"/>
     </port>
  </service-->

 

Stellen Sie außerdem sicher, dass der folgende Abschnitt (der nur für Java gilt) NICHT auskommentiert ist:

 

  <service name="WS2DB">
    <port name="WS2DBSoapPort" binding="tns:WS2DBSoapBinding">
        <soap:address location="http://localhost:8080/axis/services/WS2DB"/>
    </port>
  </service>

 

 

Schritt 2: Generieren und Erzeugen von Java-Code

Starten Sie MapForce und öffnen Sie das Projekt "Query Person database.mfp" aus dem Ordner <Dokumente>\Altova\MapForce2019\MapForceExamples\. Klicken Sie mit der rechten Maustaste im Projektfenster auf das Projekt und wählen Sie den Befehl Code generieren in | Java. MapForce generiert daraufhin Programmcode und zeigt das Ergebnis im Fenster "Meldungen" an:

mff_soap_java_ex01

 

Code wird standardmäßig relativ zum Projektverzeichnis in einem Unterverzeichnis mit dem Namen "output" generiert. In diesem Tutorial behalten wir die Standardeinstellung unverändert bei. Wie Sie das Ausgabeverzeichnis ändern können, ist unter Definieren der Codegenerierungseinstellungen erläutert.

 

Um den Java-Code zu erstellen, führen Sie Ant im selben Verzeichnis wie die Datei build.xml über die Befehlszeile aus.

mff_soap_java_ex02

 

Als Ergebnis wird im Ausgabeverzeichnis eine Axis Archivdatei (.aar) namens Query_Person_database.aar generiert.

 

Bevor Sie Ant von irgendeinem Verzeichnis aus, wie oben gezeigt aufrufen, muss es korrekt installiert und konfiguriert werden. Hier eine kurze Zusammenfassung (Nähere Informationen dazu finden Sie im Ant-Handbuch unter http://ant.apache.org):

 

Die PATH-Umgebungsvariable muss den Pfad zum Unterverzeichnis "bin" des Ant-Root-Verzeichnisses enthalten.
Die ANT_HOME-Umgebungsvariable muss auf das Verzeichnis, in dem Ant installiert ist, gesetzt sein.
Die JAVA_HOME-Umgebungsvariable muss auf das Verzeichnis, in dem Java JDK installiert ist, gesetzt sein.
Überprüfen Sie, ob Ant ausgeführt wird, indem Sie in die Befehlszeile "ant" eingeben. Die Meldung "Buildfile: build.xml ist nicht vorhanden!" bedeutet, dass Ant konfiguriert ist und nach einer Build-Datei sucht.

 

Schritt 3: Bereitstellen des Webservice auf Axis 2

 

Axis2 v1.7.6 läuft in diesem Beispiel auf dem auf eine lokalen Rechner installierten Programm Apache Tomcat 8.5.0. Axis2 kann folgendermaßen installiert und auf einem laufenden Tomcat-Server bereitgestellt werden (Nähere Informationen dazu finden Sie in der Dokumentation zu Axis2):

 

1.Laden Sie die Axis2 WAR (Web Archive) Distribution von http://axis.apache.org/axis2/java/core/download.html herunter.
2.Entpacken Sie das heruntergeladene Paket in ein lokales Verzeichnis.
3.Kopieren Sie die Datei axis2.war in das Tomcat-Verzeichnis %CATALINA_HOME%\webapps.
4.Stellen Sie sicher, dass Axis2 ausgeführt wird, indem Sie        http://localhost:8080/axis2 öffnen.

 

Öffnen Sie die Axis2-Webverwaltungsseite und laden Sie die im vorherigen Schritt generierte .aar-Datei hoch.

mff_soap_java_ex03

Der neue Webservice mit dem Namen "WS2DB" sollte jetzt auf der Axis2-Verwaltungsseite zur Verfügung stehen und aktiv sein.

mff_soap_java_ex04

 

Aufrufen des Webservice

Wenn Sie die obige Anleitung genau befolgt haben, steht der Webservice unter http://localhost:8080/axis2/services/WS2DB?wsdl zur Verfügung. Wir verwenden zum Aufrufen des soeben bereitgestellten Webservice XMLSpy. Sie können natürlich auch andere SOAP-Clients dafür verwenden.

 

Starten Sie XMLSpy (Enterprise Edition). Klicken Sie im Menü SOAP auf Neuen SOAP-Request erzeugen. Geben Sie die WSDL-Datei des Webservice ein, wenn Sie dazu aufgefordert werden (in diesem Beispiel http://localhost:8080/axis2/services/WS2DB?wsdl).

mff_soap_java_ex05

 

Klicken Sie auf OK. Wenn Sie aufgefordert werden, eine SOAP-Operation auszuwählen, wählen Sie die Operation putPerson aus.

mff_soap_java_ex06

 

XMLSpy generiert daraufhin einen Request wie den unten gezeigten.

 

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:m0="http://www.altova.com/WS2DB.xsd">
  <SOAP-ENV:Body>
    <putPerson SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        <Put xsi:type="m0:Person">
          <First xsi:type="xsd:string">String</First>
          <Last xsi:type="xsd:string">String</Last>
          <Title xsi:type="xsd:string">String</Title>
          <PhoneEXT xsi:type="xsd:string">String</PhoneEXT>
          <Email xsi:type="xsd:string">String</Email>
        </Put>
    </putPerson>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

Ersetzen Sie "String" durch den Wert, der als Input für den Webservice fungieren soll. Für dieses Beispiel könnten Sie einen Request wie den unten stehenden verwenden:

 

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:m0="http://www.altova.com/WS2DB.xsd">
  <SOAP-ENV:Body>
    <putPerson SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
        <Put xsi:type="m0:Person">
          <First xsi:type="xsd:string">John</First>
          <Last xsi:type="xsd:string">Doe</Last>
          <Title xsi:type="xsd:string">Mr</Title>
          <PhoneEXT xsi:type="xsd:string">123</PhoneEXT>
          <Email xsi:type="xsd:string">john.doe@example.org</Email>
        </Put>
    </putPerson>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

 

Sie können den obigen Request nun an den Server senden. Klicken Sie im Menü SOAP auf Request an Server senden. Daraufhin wird das Dialogfeld "SOAP Request-Einstellungen" angezeigt.

mff_soap_java_ex07

 

Klicken Sie auf OK. XMLSpy startet den Aufruf und zeigt im Editor die Antwort an. In der Abbildung unten sehen Sie eine erfolgreiche Antwort.

mff_soap_java_ex08

Auf dieselbe oben beschriebene Art können Sie auch die von diesem Webservice bereitgestellte Operation getPerson aufrufen. Eine schrittweise Anleitung dazu finden Sie im C#-Tutorial im Abschnitt "Aufrufen des Webservice". Im C#-Tutorial ist nur die WSDL URL eine andere; alle anderen Anleitungen zum Aufrufen des Webservice sind gleich.


© 2019 Altova GmbH