Sie können einem vorhandenen JAX-RPC-Web-Service-Client (Java™ API for XML-based RPC) ermöglichen, über Transportheader anwendungsdefinierte Informationen zusammen mit Ihren Web-Service-Anforderungen zu senden.
Vorbereitende Schritte
Sie benötigen einen JAX-RPC-Web-Service-Client, den Sie für das Senden von Transportheadern konfigurieren können.
Das Senden von Transportheadern wird nur von Web-Service-Clients und nur für die Transporte
HTTP und JMS unterstützt. Der Web-Service-Client muss die JAX-RPC-Anwendungsprogrammierschnittstellen direkt und nicht über zwischengeschaltete Schichten wie
eine Gatewayfunktion aufrufen. Für das Senden und Abrufen von
Transportheadern auf der Seite des Web-Service-Servers werden keine Web-Service-Anwendungsprogrammierschnittstellen verwendet.
Informationen zu diesem Vorgang
Bei der Verwendung des Programmiermodells JAX-RPC muss der Client
eine Eigenschaft im Stub- oder Call-Objekt setzen, um Werte in Transportheadern zu senden.
Nachdem Sie die Eigenschaft gesetzt haben, werden so lange Werte in allen Anforderungen für nachfolgende Remote-Methodenaufrufe
für das Stub- bzw. Call-Objekt gesetzt, bis die zugeordnete Eigenschaft auf
null gesetzt oder das Stub- bzw. Call-Objekt verworfen wird.
Wenn Sie in den Transportheadern abgehender Anforderungen Werte senden möchten, müssen Sie den Clientcode wie folgt ändern:
Vorgehensweise
- Erstellen Sie ein java.util.HashMap-Objekt, das die Headerkennungen enthält.
- Fügen Sie dem HashMap-Objekt für jeden Transportheader, den der Client senden soll, einen Eintrag hinzu.
- Geben Sie als Schlüssel für den HashMap-Eintrag eine Zeichenfolge an, die der Kennung des Transportheaders exakt entspricht. Sie können die Headerkennung mit einem reservierten Headernamen definieren, z. B. als Cookie bei
HTTP, oder Sie können eine benutzerdefinierte Headerkennung wie MyTransportHeader verwenden.
Bestimmte Headerkennungen werden auf spezielle Weise verarbeitet, aber außer dem Wert für die Headerkennung werden keine anderen Werte geprüft.
Weitere Informationen zu den Kennungen für HTTP-Header, die speziell behandelt werden, finden Sie in den bewährten Verfahren für Transportheadereigenschaften.
Allgemeine Zeichenfolgenkonstanten für
Headerkennungen, wie z. B. HTTP_HEADER_SET_COOKIE, sind in der Klasse
"com.ibm.websphere.webservices.Constants" enthalten.
- Legen Sie als Wert für den HashMap-Eintrag eine Zeichenfolge fest, die den Wert des Transportheaders enthält.
- Setzen Sie den HashMap-Eintrag im Stub- bzw. Call-Objekt mit der Eigenschaft com.ibm.websphere.webservices.Constants.REQUEST_TRANSPORT_PROPERTIES. Wenn ein Wert für die Eigenschaft REQUEST_TRANSPORT_PROPERTIES definiert ist, wird dieser HashMap-Eintrag
in nachfolgenden Aufrufen verwendet, um die Headerwerte in die abgehenden Anforderungen einzufügen.
Wenn die Eigenschaft REQUEST_TRANSPORT_PROPERTIES auf null gesetzt ist, wird in nachfolgenden
Aufrufen kein HashMap-Eintrag verwendet, um Headerwerte in abgehende Anforderungen einzufügen.
Weitere Informationen zu diesen Eigenschaften finden Sie in der Dokumentation zu den Transportheadereigenschaften.
- Setzen Sie ferne Methodenaufrufe an das Stub- oder Call-Objekt ab. Die Header und die zugehörigen
Werte aus dem HashMap-Objekt werden der abgehenden Anforderung bei jedem Methodenaufruf hinzugefügt. Wenn HTTP für den Aufruf verwendet wird,
werden die Transportheader als HTTP-Header in der HTTP-Anforderung gesendet.
Wenn JMS für den Aufruf verwendet wird, werden die Transportheader als JMS-Nachrichteneigenschaften gesendet.
Wenn die Eigenschaft nicht ordnungsgemäß definiert ist,
können API-Verwendungsfehler auftreten, die zu einem Fehler vom Typ "JAXRPCException" führen.
Die folgenden Voraussetzungen müssen erfüllt sein, oder der Prozess scheitert:
- Der im Stub- bzw. Call-Objekt definierte Eigenschaftswert muss ein HashMap-Objekt oder null sein.
- Das HashMap-Objekt darf nicht leer sein.
- Jeder Schlüssel im HashMap-Objekt muss ein Zeichenfolgeobjekt (String) sein.
- Jeder Wert im HashMap-Objekt muss ein Zeichenfolgeobjekt (String) sein.
Ergebnisse
Sie haben einen JAX-PRC-Web-Service-Client, der für das Senden von Transportheadern konfiguriert ist.