Schnittstelle CustomBinder für JAX-RPC-Anwendungen

WebSphere Application Server definiert eine Schnittstelle CustomBinder, das Sie für JAX-RPC-Anwendungen (Java™ API for XML-based Remote Call Procedure) implementieren können, um konkrete angepasste Datenbinder für einen bestimmten XML-Schematyp bereitzustellen.

Die Schnittstelle CustomBinder hat zusätzlich zu den Methoden deserialize und serialize drei Eigenschaften. Diese Eigenschaften sind QName für den XML-Schematyp, der QName-Geltungsbereich und der Java-Typ, dem der Schematyp zugeordnet wird. Der Zugriff auf die Eigenschaften erfolgt über die entsprechenden Getter-Methoden.

getQName

Die Methode getQName gibt den QName des XML-Zielschematyps zurück. Angepasste Datenbinder funktionieren nur für den Schematyp auf Stammebene.

Für anonyme Typen gibt die Methode getQName den QName des übergeordneten Elements zurück.

Für benannte Typen gibt die Methode getQName den QName des complexType oder simpleType zurück.

getQNameScope

Die Methode getQNameScope gibt die Bindereigenschaft qnameScope zurück, die angibt, ob der Schematyp ein benannter Typ oder ein anonymer Typ ist. Der Wert der Eigenschaft qnameScope kann complexType für ein Element <xsd:complexType>, simpleType für ein Element <xsd:simpleType> oder element für ein Element <xsd:element>, das mit einem anonymen Typ definiert wird, sein.

Im folgenden Schema ist data1 ein Element, das mit einem anonymen Typ definiert ist. Das Element data2 ist mit dem benannten Typ data2Type definiert.
<xsd:element name="data1">
	<xsd:complexType>
		...
	</xsd:complexType>
</xsd:element>

<xsd:element name= "data2" type="data2Type"/>
<xsd:complexType name="data2Type">
	...
< /xsd:complexType>
Der anonyme Typ data1 hat den qNameScope element und den qName data1. Der Typ data2Type hat den qNameScope complexType und den qName data2Type.

Das Element data2 wird nicht im angepassten Datenbinder dargestellt. Der angepasste Datenbinder verarbeitet nur Prozesstypen und keine Elemente.

getJavaName

Die Methode getJavaName gibt den vollständig qualifizierten Klassennamen für den Java-Typ zurück, der dem benannten oder anonymen Typ zugeordnet ist. Die Klasse kann eine Schnittstelle oder eine konkrete Klasse sein. Das von der Methode deserialize zurückgegebene Objekt hat einen Typ, der mit dem Java-Typ, der von der Methode getJavaName zurückgegeben wird, kompatibel ist.

serialize

Die Methode serialize gibt das SOAPElement zurück, das der angepasste Datenbinder aus dem Java-Objekt erstellt. Das Java-Objekt wird vom Laufzeitsystem übergeben und muss mit dem Wert übereinstimmen, der von der Methode getJavaName zurückgegeben wird. Der Parameter SOAPElement hat keine untergeordneten Elemente, aber einen gültigen QName. Dieser Parameter ist eine Referenz auf den Binder, mit dem das endgültige SOAPElement erstellt wird.

In den meisten Fällen fügt die Binderimplementierung die untergeordneten Elemente an das Stammelement SOAPElement an. Das Laufzeitsystem stellt sicher, dass der QName des SOAPElement korrekt ist. Deshalb verwaltet der angepasste Datenbinder für benannte Typen den QName des Stammelements, weil der Binder das übergeordnete Element nicht kennt. Die Binderimplementierung für einen anonymen Typ muss immer den QName im zurückgegebenen SOAPElement enthalten, der dem definierten Schematyp entspricht. WebSphere Application Server hat keine konkreten Methoden im Parameter CustomBindingContext.

deserialize

Die Methode deserialize gibt ein Java-Objekt zurück, das der angepasste Datenbinder aus dem übergebenen Stammelement SOAPElement erstellt. Der Objekttyp des zurückgegebenen Java-Objekts muss mit dem Wert übereinstimmen, der von der Methode getJavaName zurückgegeben wird. Anders als bei der Methode serialize enthält das übergebene SOAPElement die ursprünglichen XML-Daten mit den erforderlichen Namespace-Deklarationen.

Das folgende Beispiel zeigt eine Implementierung des SDP-Binder DataGraph, in der die Dienstprogrammmethoden convertToSDO und convertToSAAJ die Konvertierung von SOAPElement in SDO-Objekt und umgekehrt durchführen.

package test.sdo.binder;

import javax.xml.namespace.QName;
import javax.xml.soap.SOAPElement;

import com.ibm.wsspi.webservices.binding.CustomBinder;
import com.ibm.wsspi.webservices.binding.CustomBindingContext;

public class DataGraphBinder implements CustomBinder {
		public QName getQName() {
				return new QName("commonj.sdo", "DataGraphyType");
}
public String getJavaName() {
		return CustomBinder.QNAME_SCOPE_COMPLEXTYPE;
}
public String getJavaName() {
		return commonj.sdo.DataGraph.class.getName();
}
public javax.xml.soap.SOAPElement serialize(
				Object bean,
				SOAPElement rootNode,
				CustomBindingContext context)
				throws javax,xml.soap.SOAPException {
		// convertToSAAJ ist eine Dienstprogrammmethode, die den
	// SDO-DataGraph in das SOAPElement konvertiert
		return convertToSAAJ(bean, rootNode);

public Object deserialize(
				SOAPElement source,
				CustomBindingContext context)
				throws javax.xml.soap.SOAPException {
				// convertToSDO ist eine Dienstprogrammmethode, die
		// das SOAPElement in den SDO-DataGraph konvertiert
				return convertToSDO(source);
	}
}

Weitere Informationen zu angepassten Datenbindern finden Sie in der Dokumentation zu den angepassten Datenbindern für JAX-RPC-Anwendungen. Wie Sie Ihre angepassten Datenbinder für Entwicklungszwecke in das Befehlszeilentool WSDL2Java integrieren können, können Sie in den Informationen zu angepassten Bindungsprovidern für JAX-RPC-Anwendungen nachlesen.


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_custbindapi
Dateiname:rwbs_custbindapi.html