Zuordnung zwischen Java, WSDL und XML bei JAX-RPC-Anwendungen

Die Daten für JAX-RPC-Anwendungen (Java™ API for XML-based Remote Procedure Call) werden als XML (eXtensible Markup Language) übertragen. JAX-RPC-Anwendungen verwenden Zuordnungen zwischen den Java- und XML-Technologien (Extensible Markup Language), darunter XML-Schemata, Web Services Description Language (WSDL) und SOAP, die vom Anwendungsserver unterstützt werden.

Für JAX-RPC-Anwendungen sind die meisten dieser Zuordnungen zwischen Java und XML in der JAX-RPC-Spezifikation (Java API for XML-based Remote Procedure Call) definiert. Einige optionale oder nicht in JAX-RPC definierten Zuordnungen werden ebenfalls unterstützt. Eine vollständige Liste der APIs finden Sie in der JAX-RPC-Spezifikation. Eine vollständige Liste der unterstützten Standards und Spezifikationen finden Sie in der Dokumentation zu den Web-Service-Spezifikationen und APIs.

Notationskonventionen

Tabelle 1. Konventionen für Namespaces. Beschreibt die Namespacepräfixe und die entsprechenden in Namespacekonventionen verwendeten Namespaces.
Namespacepräfix Namespace
xsd http://www.w3.org/2001/XMLSchema
xsi http://www.w3.org/2001/XMLSchema-instance
soapenc http://schemas.xmlsoap.org/soap/encoding/
wsdl http://schemas.xmlsoap.org/wsdl/
wsdlsoap http://schemas.xmlsoap.org/wsdl/soap/
ns Benutzerdefinierter Namespace
apache http://xml.apache.org/xml-soap
wasws http://websphere.ibm.com/webservices/

Detaillierte Zuordnungsinformationen

In den folgenden Abschnitten werden die unterstützten Zuordnungen erläutert:

Java-WSDL-Zuordnung

Dieser Abschnitt enthält eine Zusammenfassung der Regeln für die Java-WSDL-Zuordnung. Die Regeln für die Java-WSDL-Zuordnung werden vom Befehl Java2WSDL für die Bottom-up-Verarbeitung verwendet. Bei der Bottom-up-Verarbeitung wird eine vorhandene Java-Service-Implementierung verwendet, um eine den Web-Service definierende WSDL-Datei zu erstellen. Die generierte WSDL-Datei muss möglicherweise zusätzlich manuelle bearbeitet werden. Die Gründe dafür sind folgende:
  • Nicht alle Java-Klassen und -Konstrukte besitzen Zuordnungen zu WSDL-Dateien. Beispielsweise können Java-Klassen, die die Regeln der Java-Bean-Spezifikation nicht unterstützen, möglicherweise nicht einem WSDL-Konstrukt zugeordnet werden.
  • Einige Java-Klassen und -Konstrukte besitzen mehrere Zuordnungen zu einer WSDL-Datei. Beispielsweise kann ein java.lang.String einem xsd:string oder einem soapenc:string zugeordnet werden. Der Befehl Java2WSDL wählt eine dieser Zuordnungen aus, die WSDL-Datei muss jedoch bearbeitet werden, wenn eine andere Zuordnung gewünscht wird.
  • Es kann mehrere Möglichkeiten geben, WSDL-Konstrukte zu generieren. wsdl:part in wsdl:message kann beispielsweise mit einem Attribut type oder element generiert werden. Der Befehl Java2WSDL trifft eine Auswahl auf der Basis der Einstellungen für die Optionen -style und -use.
  • Die WSDL-Datei beschreibt die in der SOAP-Nachricht gesendeten Instanzdatenelemente. Wenn Sie das Format oder die Namen, die in der Nachricht verwendet werden, ändern möchten, müssen Sie die WSDL-Datei bearbeiten. Der Befehl Java2WSDL ordnet eine Java-Bean-Eigenschaft beispielsweise als XML-Element zu. In einigen Fällen können Sie die WSDL-Datei ändern, um die Java-Bean-Eigenschaft als XML-Attribut zuzuordnen.
  • Die WSDL-Datei muss bearbeitet werden, wenn Header oder Anhänge unterstützt werden sollen.
  • Die WSDL-Datei muss editiert werden, wenn Sie eine mehrteilige WSDL-Datei mit dem Konstrukt wsdl:import verwenden möchten.
Für einfache Services ist die generierte WSDL-Datei ausreichend. Für komplexe Services stellt die generierte WSDL-Datei einen guten Ausgangspunkt dar. Weitere Informationen zu diesem Tool finden Sie in der Beschreibung des Befehlszeilentools Java2WSDL für JAX-RPC-Anwendungen (Java API for XML-based Remote Procedure Call).
Allgemeine Fragen
  • Zuordnung von Paketen zu Namespaces:

    Die JAX-RPC-Spezifikation gibt nicht die Standardzuordnung von Java-Paketnamen zu XML-Namespaces an. Sie gibt an, dass jedes Java-Paket einem einzelnen XML-Namespace zugeordnet werden muss. Außerdem muss jeder XML-Namespace einem einzelnen Java-Paket zugeordnet sein. Es wird ein Standardzuordnungsalgorithmus bereitgestellt, der den Namespace erstellt, indem er die Namen des Java-Pakets umkehrt und das Präfix http:// hinzufügt. Beispielsweise wird ein Paket mit dem Namen com.ibm.webservice dem XML-Namespace http://webservice.ibm.com zugeordnet.

    Die Standardzuordnung zwischen XML-Namespaces und Java-Paketnamen kann mit den Optionen "-NStoPkg" und "-PkgtoNS" der Befehle WSDL2Java und Java2WSDL außer Kraft gesetzt werden.

  • ID-Zuordnung:

    Java-IDs werden den WSDL- und XML-IDs direkt zugeordnet.

    Namen von Java-Bean-Eigenschaften werden XML-IDs zugeordnet. Beispielsweise wird eine Java-Bean mit Methoden des Typs getInfo und setInfo einem XML-Konstrukt mit dem Namen info zugeordnet.

    Die Namen der Methodenparameter der Serviceendpunktschnittstelle werden, sofern verfügbar, den WSDL- und XML-IDs direkt zugeordnet. Weitere Informationen finden Sie in der Dokumentation zur WSDL2Java-Befehlsoption "-implClass".

  • Zusammenfassung der WSDL-Konstrukte:
    Tabelle 2. Zuordnung von Java zu WSDL bzw. einem XML-Konstrukt. In der folgenden Tabelle wird die Zuordnung eines Java-Konstrukts zum zugehörigen WSDL- und XML-Konstrukt zusammenfassend dargestellt.
    Java-Konstrukt WSDL- und XML-Konstrukt
    Serviceendpunktschnittstelle wsdl:portType
    Methode wsdl:operation
    Parameter wsdl:input, wsdl:message, wsdl:part
    Rückgabe wsdl:output, wsdl:message, wsdl:part
    Auslösung (Throws) wsdl:fault, wsdl:message, wsdl:part
    Basiselementtypen einfache xsd- und soapenc-Typen
    Java-Beans xsd:complexType
    Java-Bean-Eigenschaften Verschachtelte xsd:elements von xsd:complexType
    Bereiche JAX-RPC definiert xsd:complexType und xsd:element mit einem Attribut maxOccurs="unbounded"
    Benutzerdefinierte Ausnahmen xsd:complexType
  • Konstrukt mit binding und service

    Eine wsdl:binding, die mit dem generierten wsdl:portType übereinstimmt, wird generiert. Es wird ein wsdl:service mit einem Port, der die generierte wsdl:binding enthält, generiert. Die Namen der Elemente binding und service werden mit dem Befehl Java2WSDL gesteuert.

  • style und use
    Mit den Optionen -style und -use können Sie verschiedene Arten von WSDL-Dateien generieren. Die vier unterstützten Kombinationen lauten wie folgt:
    • -style DOCUMENT -use LITERAL
    • -style RPC -use LITERAL
    • -style DOCUMENT -use LITERAL -wrapped false
    • -style RPC -use ENCODED
    Diese Kombinationen werden im Folgenden kurz beschrieben.
    • DOCUMENT LITERAL:

      Der Befehl Java2WSDL generiert eine WSDL-Datei vom Typ "document-literal", die der Spezifikation "Web Services - Interoperability (WS-I)" entspricht. Das Element wsdl:binding wird mit den Attributen embedded style="document" und use="literal" generiert. Zur Beschreibung der Anforderungsnachricht wird für jede Methode einer Serviceendpunktschnittstelle ein xsd:element generiert. Ein ähnliches xsd:element wird für jede Methode einer Serviceendpunktschnittstelle generiert, um die Antwortnachricht zu beschreiben.

    • RPC LITERAL:

      Der Befehl Java2WSDL generiert eine WS-I-konforme WSDL-Datei vom Typ "rpc-literal". Das Element wsdl:binding wird mit den Attributen embedded style="rpc" und use="literal" generiert. Die wsdl:message-Konstrukte werden für die Eingaben und Ausgaben jeder Methode einer Serviceendpunktschnittstelle generiert. Die Parameter der Methode werden mit dem Element part in wsdl:message-Konstrukten beschrieben.

    • DOCUMENT LITERAL not wrapped:

      Der Befehl Java2WSDL generiert eine WSDL-Datei des Typs "document-literal", die der JAX-RPC-Spezifikation entspricht. Diese Datei ist nicht kompatibel mit .NET. Der Hauptunterschied zwischen DOCUMENT LITERAL und DOCUMENT LITERAL not wrapped ist die Verwendung von wsdl:message-Konstrukten für die Definition der Anforderungs- und Antwortnachrichten.

    • RPC ENCODED:

      Der Befehl Java2WSDL generiert eine WSDL-Datei des Typs "rpc-encoded", die der JAX-RPC-Spezifikation entspricht. Diese Datei ist nicht kompatibel mit der Spezifikation WS-I. Das Element wsdl:binding wird mit den Attributen embedded style="rpc" und use="encoded" generiert. Für die Darstellung von Typen und Arrays werden bestimmte soapenc-Zuordnungen verwendet.

    Viele Java-Typen werden XML-Standardtypen direkt zugeordnet. java.lang.String wird beispielsweise xsd:string zugeordnet. Diese Zuordnungen sind in der JAX-RPC-Spezifikation beschrieben.

    Java-Typen, die XML-Standardtypen nicht direkt zugeordnet werden können, werden im wsdl:types-Abschnitt generiert. Eine Java-Klasse, die mit dem Java-Bean-Muster übereinstimmt, wird einem xsd:complexType zugeordnet. Eine Beschreibung der Zuordnungsregeln finden Sie in der JAX-RPC-Spezifikation. Das folgende Beispiel veranschaulicht die Zuordnung für eine Beispielbasisklasse und abgeleitete Java-Klassen.
    Java:
    
    
    public abstract class Base {  
         public Base() {}  
         public int a;                         // zugeordnet  
         private int b;                        // zugeordnet über setter-/getter-Methode  
         private int c;                        // nicht zugeordnet  
         private int[] d;                      // zugeordnet über indexierte setter-/getter-Methode  
    
         public int getB() { return b;}        // Eigenschaft b zuordnen  
         public void setB(int b) {this.b = b;}  
    
         public int[] getD() { return d;}      // indexierte Eigenschaft d zuordnen
         public void setD(int[] d) {this.d = d;}  
         public int getD(int index) { return d[index];}  
         public void setB(int index, int value) {this.d[index] = value;}  
    
         public void someMethod() {...}        // nicht zugeordnet  
      }  
    
      public class Derived extends Base {  
         public int x;                         // zugeordnet  
         private int y;                        // nicht zugeordnet  
      } 
    
    Zugeordnet zu: 
    
    <xsd:complexType name="Base" abstract="true">  
    	<xsd:sequence>
    				<xsd:element name="a" type="xsd:int"/> 
    				<xsd:element name="b" type="xsd:int"/> 
    				<xsd:element name="d" minOccurs="0" maxOccurs="unbounded" type="xsd:int"/>
    	</xsd:sequence>
    </xsd:complexType>
    
    <xsd:complexType name="Derived">  
    	<xsd:complexContent>
    				<xsd:extension base="ns:Base"> 
    			<xsd:sequence>
    								<xsd:element name="x" type="xsd:int"/>
    			</xsd:sequence>
    		</xsd:extension>
    	</xsd:complexContent>
    </xsd:complexType>
        
    
  • Nicht unterstützte Klassen:

    Wenn eine Klasse einem XML-Typ nicht zugeordnet werden kann, gibt der Befehl Java2WSDL eine Nachricht aus, und in der WSDL-Datei wird eine xsd:anyType-Referenz generiert. In diesen Situationen muss die Implementierung des Web-Service dahingehend geändert werden, dass sie JAX-RPC-kompatible Klassen verwendet.

WSDL-Java-Zuordnung

Der Befehl WSDL2Java generiert Java-Klassen auf der Basis der in der WSDL-Datei definierten Informationen.

Allgemeine Aspekte:
  • Zuordnung von Namespaces zu Paketen:

    JAX-RPC definiert keine Zuordnung von XML-Namespaces zu Java-Paketnamen. Die JAX-RPC-Spezifikation legt fest, dass jedes Java-Paket einem einzelnen XML-Namespace zugeordnet werden muss. Außerdem muss jeder XML-Namespace einem einzelnen Java-Paket zugeordnet sein. Es wird ein Standardzuordnungsalgorithmus verwendet, der jedes Protokoll aus dem XML-Namespace löscht und die Namen zurücknimmt. Beispiel: Der XML-Namespace http://websphere.ibm.com wird mit dem Namen "com.ibm.websphere" zu einem Java-Paket.

    Bei der Standardzuordnung eines XML-Namespace zu einem Java-Paket wird der Stammkontext (context-root) nicht berücksichtigt. Wenn zwei Namespaces bis zum ersten Schrägstrich (/) identisch sind, werden sie demselben Java-Paket zugeordnet. Beispiel: Die XML-Namespaces http://websphere.ibm.com/foo und http://websphere.ibm.com/bar werden beide dem Java-Paket "com.ibm.websphere" zugeordnet. Die Standardzuordnung zwischen XML-Namespaces und Java-Paketnamen kann mit den Optionen "-NStoPkg" und "-PkgtoNS" der Befehle WSDL2Java und Java2WSDL außer Kraft gesetzt werden.

    XML-Namen decken einen wesentlich größeren Bereich ab als Java-IDs. Sie können Zeichen enthalten, die in Java-IDs nicht zulässig sind. Anhang 20 der JAX-RPC-Spezifikation enthält die Regeln, mit denen ein XML-Schema einer Java-ID zugeordnet werden kann.

  • Zusammenfassung der Java-Konstrukte:
    In der folgenden Tabelle sind die XML-Java-Konstrukte zusammengefasst. Eine Beschreibung dieser Zuordnungen finden Sie in der JAX-RPC-Spezifikation.
    Tabelle 3. Zuordnung einer WSDL oder eines XML-Konstrukts zu Java. Beschreibt die Zuordnung von XML-Konstrukten zu Java.
    WSDL- und XML-Konstrukt Java-Konstrukt
    xsd:complexType Java-Bean-Klasse, Java-Ausnahmeklasse oder Java-Bereich
    verschachteltes xsd:element/xsd:attribute Java-Bean-Eigenschaft
    xsd:simpleType (enumeration) JAX-RPC-Klasse für Enum (Aufzählung)
    wsdl:message Die Signatur des Methodenparameters wird in der Regel von wsdl:message bestimmt. Signatur der Methode der Serviceendpunktschnittstelle
    wsdl:portType Serviceendpunktschnittstelle
    wsdl:operation Methode einer Serviceendpunktschnittstelle
    wsdl:binding Stub
    wsdl:service Serviceschnittstelle
    wsdl:port Methode für Portzugriff in der Serviceschnittstelle
  • XML-Standardtypen zuordnen:
    • Zuordnung einfacher XML-Typen laut JAX-RPC:

      Viele XML-Typen werden Java-Typen direkt zugeordnet. Eine Beschreibung dieser Zuordnungen finden Sie in der JAX-RPC-Spezifikation.

      Der Befehl WSDL2Java generiert Java-Typen für die XML-Schemakonstrukte, die im Abschnitt wsdl:types definiert sind. Die XML-Schemasprache ist breiter angelegt als die erforderliche bzw. die optionale Untergruppe, die in der JAX-RPC-Spezifikation definiert wird. Der Befehl WSDL2Java unterstützt die erforderlichen Zuordnungen und die meisten optionalen Zuordnungen sowie einige XML-Schemazuordnungen, die nicht in der JAX-RPC-Spezifikation definiert sind. Der Befehl WSDL2Java ignoriert einige Konstrukte, die er nicht unterstützt. Das Attribut default wird beispielsweise vom Befehl nicht unterstützt. Wenn ein xsd:element mit dem Attribut default definiert ist, wird das Attribut default ignoriert. In einigen Fällen ordnet der Befehl der Java-Schnittstelle javax.xml.soap.SOAPElement nicht unterstützte Konstrukte zu.

      Die Java-Bean-Zuordnung ist in Abschnitt 4.2.3 der JAX-RPC-Spezifikation definiert. xsd:complexType definiert den Typ. Die verschachtelten xsd:elements in den xsd:sequence- oder xsd:all-Gruppen werden Java-Bean-Eigenschaften zugeordnet. Beispiel:
      XML: 
      
       
      <xsd:complexType name="Sample">
      	 <xsd:sequence>
      					<xsd:element name="a" type="xsd:string"/>
      				<xsd:element name="b" maxOccurs="unbounded" type="xsd:string"/> 
      	</xsd:sequence>
      </xsd:complexType>
      
      Java: 
        
      public class Sample {  
           // ..  
           public Sample() {}  
      
           // Bean-Eigenschaft a  
           public String getA()             {...}  
           public void   setA(String value) {...}  
      
           // Indexiertes Bean-Merkmkal b  
           public String[] getB()           {...}  
           public String   getB(int index)  {...}  
           public void     setB(String[] values) {...}  
           public void     setB(int index, String value) {...}  
      
        }
      
    • Zuordnung des Konstrukts wsdl:portType

      Das Konstrukt wsdl:portType wird der Serviceendpunktschnittstelle zugeordnet. Der Name des Konstrukts wsdl:portType wird dem Namen der Klasse der Serviceendpunktschnittstelle zugeordnet.

    • Zuordnung des Konstrukts wsdl:operation
      Ein Konstrukt wsdl:operation in einem wsdl:portType wird einer Methode der Serviceendpunktschnittstelle zugeordnet. Der Name des Konstrukts wsdl:operation wird dem Namen der Methode zugeordnet. Das wsdl:operation enthält die Elemente wsdl:input und wsdl:output, die mit dem Attribut message auf die wsdl:message-Konstrukte der Anforderung und Antwort verweisen. Das Konstrukt wsdl:operation kann ein Element wsdl:fault enthalten, das ein Element wsdl:message referenziert, das den Fehler beschreibt. Diese Fehler werden Java-Klassen zugeordnet, die die Ausnahme java.lang.Exception, wie im Abschnitt 4.3.6 der JAX-RPC-Spezifikation beschrieben, erweitern.
      • Auswirkung des Formats document/literal wrapped
        Wenn die WSDL-Datei das Format "document/literal wrapped" verwendet, werden die Methodenparameter aus dem xsd:element des Wrapper zugeordnet. Die Formate "document/literal wrapped" und "literal" werden vom Befehl WSDL2Java automatisch erkannt. Die folgenden Kriterien müssen erfüllt sein:
        • Die WSDL-Datei muss die Angabe style="document" in ihrem wsdl:binding-Konstrukt enthalten.
        • Die input- und output-Konstrukte der Operationen im Konstrukt wsdl:binding müssen soap:body-Elemente mit der Angabe use="literal" enthalten.
        • Das wsdl:message-Element, auf das das input-Konstrukt wsdl:operation verweist, darf nur eine Komponente enthalten.
        • Die Komponente muss mit dem Attribut element ein xsd:element referenzieren.
        • Das referenzierte xsd:element oder Wrapper-Element muss denselben Namen haben wie die wsdl:operation.
        • Das Wrapper-Element darf keine xsd:attribute-Elemente enthalten.
        In solchen Fällen wird jeder Parametername von einem verschachtelten xsd:element innerhalb des Wrapper-Elements referenziert. Der Typ des Parameters wird vom Typ des verschachtelten xsd:element referenziert. Beispiel:
        WSDL:
        
        <xsd:element name="myMethod"> 
        	<xsd:complexType>
        		<xsd:sequence>
        						<xsd:element name="param1" type="xsd:string"/>
        						<xsd:element name="param2" type="xsd:int"/> 
        		</xsd:sequence>
        	</xsd:complexType>
        </xsd:element>
        ... 
        <wsdl:message name="response"/> 
        		<part name="parameters" element="ns:myMethod"/> 
        </wsdl:message name="response"/> 
        
        <wsdl:message name="response"/>
        ...
        <wsdl:operation name="myMethod"> 
        			<input name="input" message="request"/>
        			<output name="output" message="response"/>
        </wsdl:operation>
        
        Java: 
        
        void myMethod(String param1, int param2) ... 
      • Parameterzuordnung:

        Wenn das Format document/literal wrapped nicht ermittelt werden kann, werden für die Parameterzuordnung die normalen JAX-RPC-Zuordnungsregeln verwendet, die im Abschnitt 4.3.4 der JAX-RPC-Spezifikation beschrieben sind.

        Jeder Parameter wird von einem wsdl:message-Abschnitt definiert, der von den Elementen input und output referenziert wird.
        • Ein wsdl:part-Element in der wsdl:message der Anforderung wird dem Parameter input zugeordnet.
        • Ein wsdl:part-Element in der wsdl:message der Antwort wird einem return-Wert zugeordnet. Sind in der Antwort mehrere wsdl:part-Elemente enthalten, werden diese output-Parametern zugeordnet.
          • Für jeden output-Parameter wird, wie im Abschnitt 4.3.5 der JAX-RPC-Spezifikation beschrieben, eine Holder-Klasse generiert.
        • Ein wsdl:part-Element, das die wsdl:message für Anforderung und Antwort ist, wird einem inout-Parameter zugeordnet.
          • Für jeden inout-Parameter wird, wie im Abschnitt 4.3.5 der JAX-RPC-Spezifikation beschrieben, eine Holder-Klasse generiert.
          • Das Attribut wsdl:operation parameterOrder definiert die Reihenfolge der Parameter.
        XML: 
        
        <wsdl:message name="request">
        		<part name="param1" type="xsd:string"/>
        		<part name="param2" type="xsd:int"/>
        </wsdl:message name="response"/>
        
        <wsdl:message name="response"/>  
        ...
        <wsdl:operation name="myMethod" parameterOrder="param1, param2">
        			<input name="input" message="request"/>
        			<output name="output" message="response"/>
        </wsdl:operation>
        
        
        Java: 
        
        void myMethod(String param1, int param2) ... 
    • Zuordnung von wsdl:binding:
      Der Befehl WSDL2Java verwendet die wsdl:binding-Informationen, um einen implementierungsspezifischen, clientseitigen Stub zu generieren. WebSphere Application Server verwendet die wsdl:binding-Informationen auf der Serverseite, um die Anforderung ordnungsgemäß zu entserialisieren, den Web-Service aufzurufen und die Antwort zu serialisieren. Die Informationen in wsdl:binding dürfen die Generierung der Serviceendpunktschnittstelle nicht beeinflussen. Dies kann jedoch der Fall sein, wenn das Format "document/literal" wrapped verwendet wird oder MIME-Anhänge vorhanden sind.
      • MIME-Anhänge:
        In einer mit WSDL 1.1-kompatiblen WSDL-Datei wird ein Teil einer Operationsnachricht, die in der Bindung als MIME-Anhang definiert ist, zu einem Parameter des Anhangstyps, unabhängig von der deklarierten Komponente. Beispiel:
        XML: 
        <wsdl:types>
        		<schema ...>
        				<complexType name="ArrayOfBinary">
        						<restriction base="soapenc:Array">
        			  			  <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:binary[]"/>
        						</restriction>
        				</complexType>
        	</schema>
        </wsdl:types>
        
        <wsdl:message name="request">
        		<part name="param1" type="ns:ArrayOfBinary"/>
        <wsdl:message name="response"/>
        
        <wsdl:message name="response"/>
         ... 
        
        	<wsdl:operation name="myMethod"> 
        				<input name="input" message="request"/>
        				<output name="output" message="response"/>
        	</wsdl:operation>
          ...
        
        <binding ...  
        	<wsdl:operation name="myMethod"> 
        		<input>
        			<mime:multipartRelated>
        				<mime:part>
        										<mime:content part="param1" type="image/jpeg"/>
        				</mime:part>
        			</mime:multipartRelated>
        		</input>
        		 ...
        	</wsdl:operation>
        
        Java: 
        
        void myMethod(java.awt.Image param1) ... 
        Die JAX-RPC-Spezifikation erfordert Unterstützung für die folgenden MIME-Typen:
        Tabelle 4. Zuordnung von MIME-Typ und Java-Typ. Beschreibt die Zuordnung von MIME-Typen und Java-Typen.
        MIME-Typ Java-Typ
        image/gif java.awt.Image
        image/jpeg java.awt.Image
        text/plain java.lang.String
        multipart/* javax.mail.internet.MimeMultipart
        text/xml javax.xml.transform.Source
        application/xml javax.xml.transform.Source
    • Zuordnung von wsdl:service

      Das Element wsdl:service wird einer generierten Serviceschnittstelle zugeordnet. Die generierte Serviceschnittstelle enthält Methoden, mit denen man auf jeden Port im Element wsdl:service zugreifen kann. Die generierte Serviceschnittstelle wird in den Abschnitten 4.3.9, 4.3.10 und 4.3.11 der JAX-RPC-Spezifikation erläutert.

      Außerdem wird der wsdl:service der implementierungsspezifischen Klasse ServiceLocator zugeordnet, die eine Implementierung der generierten Serviceschnittstelle darstellt.

Weitere Informationen zu diesem Tool finden Sie in der Beschreibung des Befehlszeilentools WSDL2Java für JAX-RPC-Anwendungen (Java API for XML-based Remote Procedure Call).


Zuordnungen zwischen WSDL- und SOAP-Nachrichten

Die WSDL-Datei definiert das Format der SOAP-Nachricht, die über Netzverbindungen übertragen wird. Der Befehl WSDL2Java und die Laufzeitkomponente von WebSphere Application Server verwenden die Informationen in der WSDL-Datei, um sicherzustellen, dass die SOAP-Nachricht ordnungsgemäß serialisiert und entserialisiert wird.

Wenn ein Element wsdl:binding angibt, dass eine Nachricht in einem RPC-Format gesendet wird, enthält die SOAP-Nachricht ein Element, das die Operation definiert. Gibt ein Element wsdl:binding an, dass eine Nachricht im Format "document" gesendet wird, enthält die SOAP-Nachricht kein Element, das die Operation definiert.

Wenn das Element wsdl:part mit dem Attribut type definiert wird, werden der Name und der Typ der Komponente (part) in der Nachricht verwendet. Wenn das Element wsdl:part mit dem Attribut element definiert wird, werden der Name und der Typ des Elements in der Nachricht verwendet. Das Attribut element wird von der JAX-RPC-Spezifikation bei Verwendung von use="encoded" nicht unterstützt.

Wenn ein Element wsdl:binding angibt, dass eine Nachricht codiert ist, werden die Werte in der Nachricht mit xsi:type-Informationen gesendet. Wenn ein Element wsdl:binding angibt, dass eine Nachricht zum Typ "literal" gehört, werden die Werte in der Nachricht normalerweise nicht mit xsi:type-Informationen gesendet. Beispiel:
DOCUMENT/LITERAL
WSDL: 

<xsd:element name="c" type="xsd:int"/>
<xsd:element name="method">
	<xsd:complexType>
		<xsd:sequence>
						<xsd:element name="a" type="xsd:string"/>
						<xsd:element ref="ns:c"/>
		</xsd:sequence>
	</xsd:complexType>
</xsd:element>
...
				<wsdl:message name="request">	
								<part name="parameters" element="ns:method"/> 
		</wsdl:message>
	... 
		<wsdl:operation name="method"> 
						<input message="request"/>
	...

Message:
<soap:body>
				<ns:method> 
						<a>ABC</a>
						<c>123</a>
				<ns:method> 
</soap:body>
RPC/ENCODED
WSDL: 
<xsd:element name="c" type="xsd:int"/>

...
				<wsdl:message name="request">	
								<part name="a" type="xsd:string"/>
								<part name="b" element="ns:c"/>
		</wsdl:message>
	... 
		<wsdl:operation name="method"> 
								<input message="request"/>
	...

Message:
<soap:body> 
				<ns:method> 
						<a xsi:type="xsd:string">ABC</a>
						<element attribute is not permitted in rpc/encoded mode> 
				</ns:method>
	</soap:body>
 
DOCUMENT/LITERAL  not wrapped 
WSDL: 
<xsd:element name="c" type="xsd:int"/>

...
				<wsdl:message name="request">	
								<part name="a" type="xsd:string"/>
								<part name="b" element="ns:c"/>
		</wsdl:message>
	... 
		<wsdl:operation name="method"> 
								<input message="request"/>

...

Message:
<soap:body>
					<a>ABC</a>
					<c>123</a>
</soap:body>

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



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