Angepasste Datenbinder für JAX-RPC-Anwendungen

Ein angepasster Datenbinder wird für die Zuordnung von XML-Schematypen zu Java™-Objekten verwendet. Angepasste Datenbinder stellen Bindungen für XML-Schematypen bereit, die von der aktuellen JAX-RPC-Spezifikation (Java API for XML-based Remote Call Procedure) nicht unterstützt werden.

Die angepassten Datenbinder definieren Serialisierungs- und Enterialisierungsmethoden für die Umwandlung zwischen einem Java-Objekt und der Schnittstelle "SOAPElement" bereit. Ein angepasster Datenbinder wird dem Laufzeitsystem hinzugefügt und interagiert mithilfe eines SOAPElement mit der Web-Service-Laufzeit. Anders als herkömmliche Deserializer verlassen sich die angepassten Datenbinder nicht darauf, dass die Parsing-Ereignisse der niedrigen Ebene aus der Laufzeit das Java-Objekt erstellen, z. B. Simple API for XML (SAX). Stattdessen erstellt die Laufzeit den angepassten Datenbinder, indem sie die ankommende SOAP-Nachricht in einem SOAPElement bereitstellt. Das SOAPElement, das die Nachricht enthält, wird an den angepassten Datenbinder übergeben. Wenn die ankommende Nachricht beispielsweise einen SDO-Datengraph (Service Data Object) enthält, führt das Laufzeitsystem folgende Verarbeitung durch:
  1. Das Laufzeitsystem erkennt den Code <sdo:Datagraph>.
  2. Die Laufzeit fragt das Typenzuordnungssystem ab, um den angepassten Datenbinder für die Datengraph-Daten zu ermitteln, z. B. SDOCustomBinder.
  3. Ein SOAPElement wird erstellt, das den ankommenden SDO-Datengraph darstellt.
  4. Die Laufzeit übergibt das SOAPElement an den SDOCustomBinder.
In der entserialisierten Methode extrahiert der SDOCustomBinder den Inhalt aus dem SOAPElement und erstellt ein konkretes DataGraph-Objekt des Typs commonj.sdo.DataGraph.

Ablauf in der Web-Service-Laufzeitumgebung mit einem angepassten Datenbinder

Beim Serialisieren eines Java-Objekts läuft ein ähnlicher Prozess ab. Die Laufzeitumgebung lokalisiert einen angepassten Datenbinder und wandelt das Java-Objekt in ein SOAPElement um. Die Laufzeitumgebung serialisiert das SOAPElement in die Rohnachricht, die in den Ausgabedatenstrom transportiert wird.

Das folgende Beispiel zeigt ein XML-Schema, das durch die SDO-Spezifikation definiert wird:
<xsd:schema
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns:sdo="commonj.sdo"
  targetNamespace="commonj.sdo">

  <xsd:element name="datagraph" type="sdo:DataGraphType"/>
  
  <xsd:complexType name="DataGraphType">
  <xsd:complexContent>
    <xsd:extension base="sdo:BaseDataGraphType">
      <xsd:sequence>
        <xsd:any minOccurs="0" maxOccurs="1" 
                 namespace="##other" processContents="lax"/>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="BaseDataGraphType" abstract="true">
  <xsd:sequence>
    <xsd:element name="models" type="sdo:ModelsType" minOccurs="0"/>
    <xsd:element name="xsd" type="sdo:XSDType" minOccurs="0"/>
    <xsd:element name="changeSummary"
                 type="sdo:ChangeSummaryType" minOccurs="0"/>
   </xsd:sequence>
  <xsd:anyAttribute namespace="##other" processContents="lax"/>
  </xsd:complexType>
    
  <xsd:complexType name="ModelsType">
  <xsd:sequence>
    <xsd:any minOccurs="0" maxOccurs="unbounded" 
             namespace="##other" processContents="lax"/>
  </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="XSDType">
  <xsd:sequence>
    <xsd:any minOccurs="0" maxOccurs="unbounded" 
        namespace="http://www.w3.org/2001/XMLSchema" processContents="lax"/>
  </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="ChangeSummaryType">
  <xsd:sequence>
    <xsd:any minOccurs="0" maxOccurs="unbounded" 
             namespace="##any" processContents="lax"/>
  </xsd:sequence>
  <xsd:attribute name="create" type="xsd:string"/>
  <xsd:attribute name="delete" type="xsd:string"/>
  </xsd:complexType>

</xsd:schema> 

WebSphere Application Server definiert das Interface CustomBinder, das konkrete angepasste Bindungen für einen speziellen XML-Schematyp implementiert.

Der Provider für angepasste Bindungen wird verwendet, um die angepassten Bindungen in der Laufzeit zu implementieren. Informationen dazu, wie Sie Ihre angepassten Datenbinder in das Befehlszeilentool WSDL2Java für die Entwicklung integrieren, finden Sie in den Artikeln zu Providern für angepasste Bindungen. Sie können außerdem die Informationen zu Verwendungsmustern hinzuziehen, in denen gezeigt wird, wie das Providerpaket in die Laufzeitumgebung implementiert wird und welche Rollen an dem angepassten Bindungsprozess beteiligt sind.


Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



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