Befehl wsimport für JAX-WS-Anwendungen
Das Befehlszeilentool "wsimport" verarbeitet eine vorhandene WSDL-Datei (Web Services Description Language) und generiert die erforderlichen Artefakte für die Entwicklung von JAX-WS-Web-Service-Anwendungen (Java™ API for XML-Based Web Services). Die generierten Artefakte sind mit Java 5 kompatibel und können auf verschiedene Java-Versionen und -Plattformen portiert werden.
Das Befehlszeilentool wsimport unterstützt den Top-down-Ansatz für die Entwicklung von JAX-WS-Web-Services. Wenn Sie mit einer vorhandenen WSDL-Datei beginnen, verwenden Sie das Befehlszeilentool wsimport, um die erforderlichen portierbaren JAX-WS-Artefakte zu generieren.


- Serviceendpunktschnittstelle - Die Serviceendpunktschnittstelle ist eine annotierte Java-Darstellung der WSDL-Datei für den Web-Service. Diese Schnittstelle wird für die Implementierung von JavaBeans-Endpunkten bzw. die Erstellung dynamischer Proxy-Clientinstanzen verwendet.
- Erweiterungsklasse javax.xml.ws.Service - Diese generierte Klasse erweitert die Klasse javax.xml.ws.Service. Diese Klasse wird zum Konfigurieren und Erstellen dynamischer Proxy- und Dispatch-Instanzen zu konfigurieren und zu erstellen.
- Erforderliche Data-Beans, einschließlich aller JAXB-Beans (Java Architecture for XML Binding), die zum Modellieren der Web-Service-Daten erforderlich sind.

- Sie müssen alle Services in der WSDL-Hauptdatei definieren. Services, die in einer importierten WSDL-Datei definiert werden, werden vom Tool wsimport nicht verarbeitet.
- Wenn Sie das Tool wsimport für eine WSDL-Datei ausführen, die das Muster "Document" oder "Literal" implementiert, müssen die complexTypes-Elemente, die die Ein- und Ausgabetypen definieren, aus eindeutigen Parameternamen bestehen, damit bei Verwendung des portType Namenskonflikte in der Parameterliste für die Operation vermieden werden.
- Wenn Sie das Tool wsimport ausführen und einen ?wsdl-URI (Uniform Resource Identifier) als Parameter für eine WSDL-Datei übergeben, sollten Sie sich vergewissern, dass Sie den tatsächlichen, aufgelösten WSDL-URI verwenden. Im vollständigen Profil löst das Tool wsimport den ?wsdl-URI richtig auf, aber andere relative URIs, die referenziert werden, werden möglicherweise nicht richtig aufgelöst. Im Liberty-Profil löst das Tool wsimport den ?wsdl-URI und andere referenzierte relative URIs richtig auf.
Sie können diese JAX-WS-Tools nicht nur über die Befehlszeile, sondern auch in den Ant-Build-Umgebungen für WebSphere Application Server Traditional 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.
Syntax
Die Befehlszeilensyntax ist im Folgenden beschrieben:
![[Windows]](../images/windows.gif)
Stammverzeichnis_des_Anwendungsservers\bin\wsimport.bat [Optionen] WSDL-URI
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
Stammverzeichnis_des_Anwendungsservers/bin/wsimport.sh [Optionen] WSDL-URI
![[IBM i]](../images/iseries.gif)
Stammverzeichnis_des_Anwendungsservers/bin/wsimport [Optionen] WSDL-URI
Parameter
Der WSDL-URI ist der einzige erforderliche Parameter. Die folgenden Parameter sind für den Befehl wsimport optional:
- -b <Pfad>
- Gibt die externen JAX-WS- oder JAXB-Bindungsdateien an. Mit der Option -b können Sie mehrere JAX-WS- und JAXB-Bindungsdateien angeben. Jede Datei muss jedoch mit einer eigenen Option -b angegeben werden.
- -B <JAXB-Option>
- Gibt an, dass diese Option an den JAXB-Schema-Compiler übergeben werden soll.
- -catalog
- Gibt die Katalogdatei für die Auflösung externer Entitätsreferenzen an. Unterstützt werden die Formate TR9401, XCatalog und OASIS XML Catalog.
- -d <Verzeichnis>
- Gibt an, wohin die generierten Ausgabedateien geschrieben werden sollen.
- -extension
- Gibt an, ob angepasste Erweiterungen für Funktionen akzeptiert werden, die nicht in der JAX-WS-Spezifikation angegeben sind. Die Verwendung angepasster Erweiterungen kann dazu führen, dass die Anwendungen nicht portierbar sind oder nicht mit anderen Implementierungen interagieren können.
- -help
- Zeigt das Hilfemenü an.
- -httpproxy:<Host>:<Port>
- Gibt einen HTTP-Proxy an. Der Standardportwert ist 8080.
- -keep
- Gibt an, ob die generierten Quellendateien aufbewahrt werden sollen.
- -p <Paketname>
- Gibt ein Zielpaket an und überschreibt jede WSDL-Datei und Schemabindungsanpassung für den Paketnamen und den Standardalgorithmus für Paketnamen, die in der JAX-WS-Spezifikation definiert sind.
- -quiet
- Gibt an, dass die Ausgabe des Tools wsimport unterdrückt werden soll.
- -s <Verzeichnis>
- Gibt das Verzeichnis an, in das die generierten Quellendateien geschrieben werden sollen.
- -target <Version>
- Gibt an, dass Code, der mit einer bestimmten Version der JAX-WS-Spezifikation kompatibel ist, generiert werden soll. Geben Sie Version 2.0 oder 2.1 an, um Code zu generieren, der mit der Spezifikation JAX-WS 2.0 oder JAX-WS 2.1 kompatibel ist. Geben Sie Version 2.1 an, um Code zu generieren, der mit der Spezifikation JAX-WS 2.1 kompatibel ist. Der Standardwert ist Version 2.2 und generiert kompatiblen Code für die Spezifikation JAXB 2.2.
- Die Option target ist für das Liberty-Profil erforderlich.
- -verbose
- Gibt an, dass Nachrichten über die Aktionen des Compilers ausgegeben werden sollen.
- -version
- Gibt die Versionsinformationen aus. Wenn Sie diese Option angeben, wird nur die Versionsinformation in die Ausgabe eingefügt und es findet keine normale Befehlsverarbeitung statt.
- -wsdlLocation
- Gibt den Wert für @WebServiceClient.wsdlLocation an.
Unterstützte Konfigurationen: Das Tool wsimport setzt den Wert für @WebService.wsdlLocation weder standardmäßig noch bei Angabe des Attributs "-wsdlLocation". Das Befehlszeilentool wsimport aktualisiert lediglich die Annotation @WebServiceClient.wsdlLocation. Sie können die Annotation @WebService.wsdlLocation mit einem relativen URL, der die Position der WSDL-Datei (Web Services Description Language) angibt, manuell aktualisieren. Wenn die Annotation @WebService.wsdlLocation sich in einer Endpunktimplementierungsklasse befindet, muss der Wert ein relativer URL und das referenzierte WSDL-Dokument im Anwendungspaket enthalten sein. sptcfg
Fehler vermeiden: Wenn Sie einen HTTPS-URL für den Parameter "-wsdlLocation" angeben, generiert das Tool wsimport eine Serviceklasse mit einem Konstruktor "no-argument", der ungültig ist. Vermeiden Sie es, den Servicekonstruktor "no-argument" zur Instanziierung des Service zu verwenden. Übergeben Sie stattdessen den HTTPS-URL an einen der Serviceklassenkonstruktoren, der einen WSDL-URL als Argument verwendet, z. B.:
gotchaMyService("https://example.ibm.com/My?wsdl");
- -clientJar
- wsimport in der Service-WSDL generiert die notwendigen Klassen für den Aufruf des Web-Service. Es werden jedoch nicht alle von der JAX-WS-Laufzeitkomponente vorausgesetzten Informationen in der Serviceendpunktschnittstelle oder im Web-Service-Client über Web-Service-Standardannotationen erfasst. Die generierte Klasse hat die Position der WSDL, sodass sie die zusätzlichen Metadaten des Service zur Laufzeit abrufen kann. Es ist jedoch eine zusätzliche Verbindung erforderlich, um jedes Mal, wenn eine Serviceinstanz erstellt wird, auf die Metadaten zugreifen zu können. Das erhöht die Netzauslastung. Wenn Sie die Option -clientJar für wsimport verwenden, werden die WSDL und das Schema automatisch heruntergeladen und alle generierten clientseitigen Artefakte werden in einer JAR-Datei gepackt. Daher können Sie die generierte JAR-Datei mit dieser neuen Option in den Klassenpfad aufnehmen und müssen die WSDLs nicht jedes Mal, wenn eine Serviceinstanz erstellt wird, vom Endpunkt abrufen. Damit vermeiden Sie eine unnötige Erhöhung der Netzauslastung.