JAX-WS-Client aus einer WSDL-Datei entwickeln

Die JAX-WS-Tools (Java API for XML-Based Web Services) unterstützen die Generierung von Java-Artefakten, die Sie benötigen, um statische JAX-WS-Web-Service-Clients aus einer WSDL-Datei (Web Services Description Language) zu entwickeln.

Vorbereitende Schritte

Wenn Sie zum Entwickeln von JAX-WS-Web-Services einen Top-down-Ansatz unter Verwendung einer WSDL-Datei verwenden, müssen Sie den URL der WSDL-Datei kennen.

[Windows][z/OS]Wenn die WSDL-Datei eine lokale Datei ist, sieht der URL wie folgt aus: file:Laufwerk:\Pfad\Dateiname.wsdl.

[Linux][AIX][HP-UX][Solaris][IBM i]Wenn die WSDL-Datei eine lokale Datei ist, sieht der URL wie folgt aus: file:/Pfad/Dateiname.wsdl.

Lokale Dateien können Sie auch mit dem absoluten oder relativen Dateisystempfad angeben.

Informationen zu diesem Vorgang

Das statische Clientprogrammiermodell für JAX-WS wird dynamischer Proxy-Client genannt. Der dynamische Proxy-Client ruft einen Web-Service auf, der auf einer bereitgestellten Serviceendpunktschnittstelle basiert. Nachdem Sie den Proxy erstellt haben, kann die Clientanwendung wie bei einer Standardimplementierung dieser Schnittstellen Methoden im Proxy-Server aufrufen. Für JAX-WS-Web-Service-Clients, die das Programmiermodell für dynamische Proxys verwenden, verwenden Sie das JAX-WS-Tool wsimport, um eine WSDL-Datei zu verarbeiten und portierbare Java-Artefakte zu generieren, die zum Erstellen eines Web-Service-Clients verwendet werden. Erstellen Sie die folgenden portierbaren Java-Artefakte mit dem Tool wsimport:
  • Serviceendpunktschnittstelle
  • Serviceklasse
  • Ausnahmeklasse, die über die Klasse "wsdl:fault" zugeordnet wird (sofern vorhanden)
  • Generierte JAXB-Typwerte (Java Architecture for XML Binding), bei denen es sich um Java-Klassen handelt, die über XML-Schematypen zugeordnet werden
Unterstützte Konfigurationen Unterstützte Konfigurationen: Die Befehlszeilentools wsimport, wsgen, schemagen und xjc werden auf der Plattform z/OS nicht unterstützt. Diese Funktionalität wird von den Assembliertools, die in der z/OS-Version von WebSphere Application Server enthalten sind, bereitgestellt. Weitere Informationen zur Verwendung dieser Befehlszeilentools für JAX-WS-Anwendungen finden Sie in der Dokumentation zu diesen Tools.sptcfg
Bewährtes Verfahren Bewährtes Verfahren: WebSphere Application Server stellt Tools für Java™ API for XML-Based Web Services (JAX-WS) und Java Architecture for XML Binding (JAXB) bereit. Die Befehlszeilentools wsimport, wsgen, schemagen und xjc befinden sich im Verzeichnis "Stammverzeichnis_des_Anwendungsservers\bin\" von WebSphere Application Server Traditional. Die Befehle xjc und schemagen befinden sich im Verzeichnis Stammverzeichnis_des_Anwendungsservers\jaxb\bin\ im Liberty-Profil. In einigen Fällen unterstützen die von den WebSphere Application Server-Tools und den JDK-Tools generierten Artefakte dieselben Spezifikationsstufen. Im Allgemeinen sind die von den JDK-Tools generierten Artefakte in kompatible Laufzeitumgebungen portierbar. Es empfiehlt sich jedoch, die WebSphere-Tools zu verwenden, um eine nahtlose Integration in die Umgebung von WebSphere Application Server zu erreichen und die Features zu nutzen, die möglicherweise nur in WebSphere Application Server unterstützt werden. Um den Vorteil der JAX-WS- und JAXB-V2.2-Tools zu nutzen, verwenden Sie die mit Application Server bereitgestellten Tools, die sich im Verzeichnis Stammverzeichnis_des_Anwendungsservers\bin\ befinden.bprac

Sie können diese JAX-WS-Tools nicht nur über die Befehlszeile, sondern auch in den Ant-Build-Umgebungen aufrufen. Verwenden Sie die Ant-Task com.sun.tools.ws.ant.WsImport in der Ant-Build-Umgebung, um das Tool "wsimport" aufzurufen. Damit diese Ant-Task richtig ausgeführt wird, müssen Sie Ant mit dem Script "ws_ant" aufrufen.

Vorgehensweise

Führen Sie den Befehl "wsimport" aus, um die portierbaren Clientartefakte zu generieren. Das Tool wsimport befindet sich im Verzeichnis Stammverzeichnis_des_Anwendungsservers\bin\.
[Windows]
Stammverzeichnis_des_Anwendungsservers\bin\wsimport.bat WSDL-URL 
[AIX][HP-UX][Linux][Solaris]
Stammverzeichnis_des_Anwendungsservers/bin/wsimport.sh WSDL-URL
[IBM i]
Stammverzeichnis_des_Anwendungsservers/bin/wsimport WSDL-URL
(Optional) Verwenden Sie die folgenden Optionen mit dem Befehl wsimport:
  • Verwenden Sie die Option -verbose, um eine Liste der generierten Dateien anzuzeigen, wenn die Sie den Befehl ausführen.
  • Verwenden Sie die Option -keep , um die generierten Java-Dateien beizubehalten.
  • Verwenden Sie die Option -wsdlLocation, um die Position der WSDL-Datei anzugeben.
    Bewährtes Verfahren Bewährtes Verfahren: Um zu gewährleisten, dass eine EAR-Datei für einen JAX-WS-Web-Service-Client erzeugt wird, die auf andere Systeme portierbar ist, empfiehlt es sich, das WSDL-Dokument in das Anwendungsmodul, z. B. eine JAR-Datei für den Web-Service-Client oder eine WAR-Datei, zu packen. Mit dem Annotationsattribut -wsdllocation können Sie einen relativen URI für die Position der WSDL-Datei angeben. Wenn sich Ihre Datei MyService.wsdl beispielsweise im Verzeichnis "META-INF/wsdl/" befindet, führen Sie das Tool wsimport aus und verwenden Sie die Option -wsdllocation, um den Wert anzugeben, der für die Position der WSDL-Datei verwendet werden soll. Auf diese Weise wird sichergestellt, dass die generierten Artefakte die richtigen -wsdllocation-Informationen haben, die erforderlich sind, wenn die Anwendung in die Administrationskonsole geladen wird;
    wsimport -keep -wsdllocation /META-INF/wsdl/MyService.wsdl
    bprac
  • Verwenden Sie die Option -b, wenn Sie WSDL- oder Schemaanpassungen verwenden, um externe Bindungsdateien anzugeben, die Ihre Anpassungen enthalten.

    Sie können die Bindungen in Ihrer WSDL-Datei anpassen, um asynchrone Zuordnungen oder Zuordnungsdateien zu aktivieren. Fügen Sie zum Generieren asynchroner Schnittstellen die Bindungsdeklaration enableAsyncMapping für clientseitige Anpassungen dem Element wsdl:definitions oder einer externen Bindungsdatei, die in der WSDL-Datei definiert ist, hinzu. Verwenden Sie die Bindungsdeklaration enableMIMEContent in Ihrer Client- oder Serverbindungsdatei, um die "mime:content"-Standardzuordnungsregeln zu aktivieren oder zu inaktivieren. Weitere Informationen zu angepassten Bindungsdeklarationen finden Sie in Kapitel 8 der JAX-WS-Spezifikation.

Lesen Sie die Dokumentation zum Befehl wsimport, um mehr über diesen Befehl und die zusätzlichen Optionen zu erfahren, die Sie angeben können.

Ergebnisse

Sie haben jetzt die generierten Java-Artefakte, um einen JAX-WS-Client zu erstellen, der JAX-WS-Web-Services aufrufen kann. Weitere Informationen zur Verwendung, zur Syntax und zu den Parametern für den Befehl wsimport finden Sie in der Dokumentation zum Befehl wsimport für JAX-WS-Anwendungen.

Beispiel

Das folgende Beispiel veranschaulicht, wie mit dem Befehl wsimport die Beispieldatei ping.wsdl zum Generieren portierbarer Artefakte verarbeitet wird.
  1. Kopieren Sie die folgende Datei ping.wsdl in ein temporäres Verzeichnis.
    <?xml version="1.0" encoding="UTF-8"?>
    <!--
     * Dieses Programm darf für Entwicklungs-, Nutzungs-, Marketing- und
     * Vertriebszwecke gebührenfrei genutzt, ausgeführt, kopiert, geändert und
     * vertrieben werden.
     -->
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    		xmlns:tns="http://com/ibm/was/wssample/sei/ping/"
    		xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="PingService"
    		targetNamespace="http://com/ibm/was/wssample/sei/ping/">
    	<wsdl:types>
    		<xsd:schema
    						targetNamespace="http://com/ibm/was/wssample/sei/ping/"
    					xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    
    
    						<xsd:element name="pingStringInput">
    				<xsd:complexType>
    					<xsd:sequence>
    												<xsd:element name="pingInput" type="xsd:string" />
    					</xsd:sequence>
    				</xsd:complexType>
    			</xsd:element>
    		</xsd:schema> 	</wsdl:types>
    		<wsdl:message name="pingOperationRequest">
    				<wsdl:part element="tns:pingStringInput" name="parameter" />
    	</wsdl:message>
    		<wsdl:portType name="PingServicePortType">
    				<wsdl:operation name="pingOperation">
    						<wsdl:input message="tns:pingOperationRequest" />
    
    		</wsdl:operation>
    	</wsdl:portType>
    		<wsdl:binding name="PingSOAP" type="tns:PingServicePortType">
    				<soap:binding style="document"
    						transport="http://schemas.xmlsoap.org/soap/http" />
    				<wsdl:operation name="pingOperation">
    						<soap:operation soapAction="pingOperation" style="document" />
    			<wsdl:input>
    								<soap:body use="literal" />
    			</wsdl:input>
    		</wsdl:operation>
    	</wsdl:binding>
    		<wsdl:service name="PingService">
    				<wsdl:port binding="tns:PingSOAP" name="PingServicePort">
    			<soap:address 
    								location="http://localhost:9080/WSSampleSei/PingService" />
    		</wsdl:port>
    	</wsdl:service>
    </wsdl:definitions>
  2. Führen Sie den Befehl wsimport im Verzeichnis Stammverzeichnis_des_Anwendungsservers\bin\ aus.
    [Windows]
    Stammverzeichnis_des_Anwendungsservers\bin\wsimport.bat -keep -verbose ping.wsdl
    [Linux][AIX][HP-UX][Solaris]Betriebssysteme wie AIX oder Linux führen das Script im Prozesskontext der übergeordneten Shell aus, um die exportierten Variablen durch Ausführen des folgenden Befehls zu übernehmen:
    . ./setupCmdLine.sh  (Beachten Sie das Leerzeichen zwischen den Punkten.)
    im Verzeichnis . /Stammverzeichnis_des_Anwendungssservers>/bin. Führen Sie den folgenden Befehl wsimport aus:
    Stammverzeichnis_des_Anwendungsservers/bin/wsimport.sh -keep -verbose ping.wsdl 
    [IBM i]
    Stammverzeichnis_des_Anwendungsservers/bin/wsimport -keep -verbose ping.wsdl
Nachdem Sie die Schablonendateien mit dem Befehl wsimport generiert haben, sind die folgenden Dateien vorhanden:
com\ibm\was\wssample\sei\ping\ObjectFactory.java
com\ibm\was\wssample\sei\ping\package-info.java
com\ibm\was\wssample\sei\ping\PingServicePortType.java
com\ibm\was\wssample\sei\ping\PingService.javacom\ibm\was\wssample\sei\ping\PingStringInput.java

Die Dateien ObjectFactory.java, PingService.java und PingServicePortType.java sind die generierten Java-Klassendateien, die verwendet werden, wenn Sie die Java-Artefakte mit Ihrer Clientimplementierung in eine JAR- (Java Archive) oder WAR-Datei (Web Archive) packen.

Nächste Schritte

Vervollständigen Sie die Clientimplementierung.

Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxwsclientfromwsdl
Dateiname:twbs_jaxwsclientfromwsdl.html