Mit den JAXB-Tools "xjc" JAXB-Klassen aus einer XML-Schemadatei generieren

Verwenden Sie die JAXB-Tools (Java Architecture for XML Binding) "xjc", um eine XML-Schemadatei in vollständig annotierte Java-Klassen zu kompilieren.

Vorbereitende Schritte

Entwickeln Sie eine XML-Schemadatei, oder verwenden Sie eine vorhandene.

Informationen zu diesem Vorgang

Verwenden Sie die JAXB-APIs und -Tools, um Zuordnungen zwischen einem XML-Schema und Java-Klassen zu erstellen. XML-Schemata beschreiben die Datenelemente und Beziehungen in einem XML-Dokument. Wenn eine Datenzuordnung oder -bindung vorhanden ist, können Sie XML-Dokumente in Java-Objekte und umgekehrt konvertieren. Anschließend können Sie auf die in einem XML-Dokument gespeicherten Daten zugreifen, ohne die Datenstruktur verstehen zu müssen.

Zum Entwickeln von Web-Services in einem Top-down-Entwicklungsansatz aus einer vorhandenen WSDL-Datei (Web Services Description Language) verwenden Sie das Tool wsimport, um die Artefakte für Ihre JAX-WS-Anwendungen zu generieren. Nachdem Sie die Java-Artefakte für Ihre Anwendung generiert haben, können Sie mit dem Befehlszeilentool xjc des JAXB-Schemacompilers vollständig annotierte Java-Klassen aus einer XML-Schemadatei generieren. Die generierten annotierten Java-Klassen enthalten alle erforderlichen Informationen, die die JAXB-Laufzeitumgebung benötigt, um die XML für das Marshaling und Unmarshaling syntaktisch zu analysieren. Sie können die generierten JAXB-Klassen in JAX-WS-Anwendungen (Java API for XML Web Services) oder anderen Java-Anwendungen für die Verarbeitung von XML-Daten verwenden.

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
Unterstützte Konfigurationen Unterstützte Konfigurationen: Dieses Produkt unterstützt die Spezifikation JAXB 2.2. JAX-WS 2.2 erfordert JAXB 2.2 für die Datenbindung. sptcfg

Sie können das JAXB-Tool xjc nicht nur über die Befehlszeile aufrufen, sondern auch in Ant-Build-Umgebungen. Verwenden Sie die Ant-Task com.sun.tools.xjc.XJCTask in der Ant-Build-Umgebung, um das Schemacompilertool xjc aufzurufen. Damit diese Ant-Task richtig ausgeführt wird, müssen Sie Ant mit dem Script "ws_ant" aufrufen.

Fehler vermeiden Fehler vermeiden: Wenn Sie die Ant-Task xjc verwenden, müssen Sie den Parameter destdir anstelle der Option target verwenden, um das Zielverzeichnis anzugeben. Die Angabe der Option target mit der Ant-Task xjc löst einen Fehler aus.gotcha

Vorgehensweise

  1. Verwenden Sie den JAXB-Schemacompiler, den Befehl xjc, um annotierte JAXB-Java-Klassen zu generieren. Sie finden den Schemacompiler im Verzeichnis Stammverzeichnis_des_Anwendungsservers\bin\. Der Schemacompiler erzeugt einen Satz mit Paketen, die je nach den für die Kompilierung verwendeten Bindungsoptionen Java-Quellendateien und JAXB-Eigenschaftendateien enthalten.
  2. (Optional) Verwenden Sie angepasste Bindungsdeklarationen, um die JAXB-Standardzuordnungen zu ändern. Definieren Sie die Bindungsdeklarationen in einer XML-Schemadatei oder in einer separaten Bindungsdatei. Sie können die angepassten Bindungsdateien über die Option -b mit dem Befehl xjc übergeben.
  3. Kompilieren Sie die generierten JAXB-Objekte. Fügen Sie zum Kompilieren der generierten Artefakte den Thin Client for JAX-WS with WebSphere Application Server dem Klassenpfad hinzu.

Ergebnisse

Nachdem Sie nun die JAXB-Objekte generiert haben, können Sie Java-Anwendungen schreiben, die die generierten JAXB-Objekte verwenden, und den XML-Inhalt mit den generierten JAXB-Klassen ändern.

Beispiel

Das folgende Beispiel veranschaulicht, wie Sie mit den JAXB-Tools Java-Klassen aus einer vorhandenen XML-Schemadatei generieren können.
  1. Kopieren Sie die folgende Schemadatei bookSchema.xsd in ein temporäres Verzeichnis:
      <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">                                          
         <xsd:element name="CatalogData">                                                               
           <xsd:complexType>
             <xsd:sequence>
               <xsd:element name="books" type="bookdata" minOccurs="0" 
    												maxOccurs="unbounded"/>    
             </xsd:sequence>
           </xsd:complexType>
         </xsd:element>
         <xsd:complexType name="bookdata">                                                              
           <xsd:sequence>
             <xsd:element name="author" type="xsd:string"/>                                         
             <xsd:element name="title" type="xsd:string"/>                                          
             <xsd:element name="genre" type="xsd:string"/>                                          
             <xsd:element name="price" type="xsd:float"/>                                           
             <xsd:element name="publish_date" type="xsd:dateTime"/>                                 
             <xsd:element name="description" type="xsd:string"/>                                    
           </xsd:sequence>
           <xsd:attribute name="id" type="xsd:string"/>                                               
         </xsd:complexType>
       </xsd:schema> 
  2. Öffnen Sie eine Eingabeaufforderung.
  3. Führen Sie den JAXB-Schemacompiler, den Befehl xjc, in dem Verzeichnis aus, in dem sich die Schemadatei befindet. Das Schemacompiliertool xjc befindet sich im Verzeichnis Stammverzeichnis_des_Anwendungsservers\bin\.
    [Windows]
    Stammverzeichnis_des_Anwendungsservers\bin\xjc.bat bookSchema.xsd
    [Linux][AIX][HP-UX][Solaris]
    Stammverzeichnis_des_Anwendungsservers/bin/xjc.sh bookSchema.xsd
    Wenn Sie den Befehl xjc ausführen, werden die folgenden JAXB-Java-Dateien generiert:
    generated\Bookdata.java
    generated\CatalogdData.java
    generated\ObjectFactory.java
  4. Verwenden Sie die generierten JAXB-Objekte in einer Java-Anwendung, um den XML-Inhalt mit den generierten JAXB-Klassen zu ändern.

Weitere Informationen zum Befehl xjc finden Sie in der Dokumentation zur Referenzimplementierung von JAXB.


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_jaxbschema2java
Dateiname:twbs_jaxbschema2java.html