Java-SOAP-Webservice-Spezifisches
MapForce generiert den gesamten Code und alle Scripts, die zur Erstellung eines SOAP-Webservice benötigt werden. Damit der Webservice für den Konsumenten jedoch zur Verfügung steht, muss der generierte Code erzeugt und auf dem Axis2 (Tomcat)-Server bereitgestellt werden. Zusätzlich dazu wird zum Erzeugen des Java-Codes Apache Ant benötigt.
Generieren und Erzeugen von Java-Code
1.Öffnen Sie das Webservice-Projek, anhand dessen Sie Code generieren möchten. Ein Beispiel, wie Sie ein solches Projekt erstellen, finden Sie im vorherigen Abschnitt unter Erstellen von SOAP-Webservice-Projekten anhand von WSDL-Dateien.
2.Klicken Sie im Menü Projekt auf Code generieren in | Java und wählen Sie das Zielverzeichnis aus. Nach Abschluss der Codegenerierung werden im Zielverzeichnis mehrere Ordner und Dateien, darunter ein com-Verzeichnis erstellt, das allgemeine Altova-Klassen sowie die eigentliche Klasse des Webservice-Projekts enthält.
3.Erzeugen Sie den generierten Java-Code (indem Sie die von MapForce generierte build.xml für Apache Ant bereitstellen). Dadurch wird eine Axis-Archivdatei (*.aar) erstellt, die Sie auf Axis2 bereitstellen können.
Wenn Sie das generierte Projekt mit Eclipse öffnen, sehen Sie eventuell einen Fehler wie "The import org.apache cannot be resolved". Vergewissern Sie sich in diesem Fall, dass die Axis2-Bibliotheken zum Java Build-Pfad hinzugefügt wurden. Um die Axis2-Bibliotheken in Eclipse 4.4.2 zum Java Build-Pfad hinzuzufügen, gehen Sie folgendermaßen vor:
1.Klicken Sie mit der rechten Maustaste im Paket-Explorer auf das Projekt und wählen Sie Eigenschaften.
2.Klicken Sie auf Java Build Path.
3.Klicken Sie auf dem Register Bibliotheken auf Externe JARs hinzufügen und fügen Sie die Axis2-Bibliotheken aus dem Ordner <AXIS2_HOME>\lib hinzu.
Bereitstellen des Webservice
Um den Webservice bereitzustellen, wählen Sie eine der folgenden Methoden:
•Öffnen Sie die Web-Verwaltungsseite "Upload Services" von Axis2 und laden Sie die im vorherigen Schritt erstellte .aar-Datei hoch
•Laden Sie die Datei manuell hoch. Wenn Ihr Tomcat-Server z.B. im Ordner <TOMCAT_HOME>, installiert wurden, können Sie die .aar-Datei manuell in den Ordner <TOMCAT_HOME>\webapps\axis2\WEB-INF\services kopieren.
Ein Schritt-für-Schritt-Beispiel finden Sie unter Beispiel: Generieren von SOAP-Webservices (Java).
Webservice online entfernen
Löschen Sie die Datei *.aar aus dem Ordner <TOMCAT_HOME>\webapps\axis2\WEB-INF\services.
Axis2-Einschränkungen
Die Axis2-Unterstützung für RPC/encoded ist eingeschränkt. MapForce kann jedoch RPC/encoded WebServices (sowohl SOAP 1.1 als auch SOAP 1.2) generieren, mit der Einschränkung, dass die Original-WSDL-Datei nicht vom Webserver abgerufen wird.
D.h., dass z.B. http://127.0.0.1/axis2/services/WS2DB?wsdl keine verwendbare WSDL-Datei zurückgeben würde.
Bei document/literal Webservices stellt die obige URL eine brauchbare, korrekte WSDL-Datei bereit. Sie unterscheidet sich jedoch vom Original: Kommentare werden entfernt , Namespaces werden geändert. Der Webservice hat jedoch immer noch dieselbe Semantik wie die Original-WSDL-Datei, mit der der Service erstellt wurde.
Zwar unterstützt Axis2 RPC/encoded nicht, doch kann es WSDL von online gestelltem Java-Code (kompiliertem Code) generieren. Daher kann MapForce-generierter Code RPC/encoded Messages verarbeiten; Axis2 wird nur für die Übertragung verwendet.
Bekanntes Problem: Namespaces in der SOAP Response-Nachricht
Der von MapForce generierte Code instantiiert die javax.xml.transform.TransformerFactory-Klasse. Diese Klasse kann aus der Systemeigenschaft javax.xml.transform.TransformerFactory gelesen werden, wenn die Klassenimplementierung geladen ist (Nähere Informationen dazu finden Sie in der Java-Dokumentation zu dieser Klasse).
Wenn in Ihrer Java-Umgebung in der Systemeigenschaft javax.xml.transform.TransformerFactory die Implementierung org.apache.xalan.transformer.TransformerIdentityImpl definiert ist, wird die SOAP Response-Nachricht eventuell mit falschen Namespaces generiert.
Um dies zu verhindern, wird empfohlen, die Implementierung org.apache.xalan.xsltc.trax.TransformerFactoryImpl zu verwenden. Fügen Sie dazu die folgenden Parameter zur Java Virtual Machine (JVM) hinzu:
-Djavax.xml.transform.TransformerFactory=org.apache.xalan.xsltc.trax.TransformerFactoryImpl |
Die Anleitung zum Hinzufügen der Parameter zur JVM ist von dem von Ihnen verwendeten Betriebssystem und Server abhängig. Die folgende Anleitung gilt für Apache Tomcat 7.0, das als Service-Applikation auf Windows 7 ausgeführt wird:
1.Führen Sie Tomcat7w.exe aus (Diese Datei befindet sich im Unterordner \bin des Tomcat Stammverzeichnisses CATALINA_HOME).
2.Klicken Sie auf das Register Java.
3.Geben Sie am Ende des Felds "Java Options" folgenden Text ein: -Djavax.xml.transform.TransformerFactory=org.apache.xalan.xsltc.trax.TransformerFactoryImpl