Sie können einem vorhandenen JAX-RPC-Web-Service-Client (Java™ API for XML-based RPC) ermöglichen, Werte aus
Transportheadern abzurufen. Bei HTTP-Anforderungen werden die Transportheader aus den
HTTP-Headern in der HTTP-Antwortnachricht abgerufen. Bei JMS-Anforderungen (Java Message
Service) werden die Transportheader aus den JMS-Nachrichteneigenschaften in der JMS-Antwortnachricht abgerufen.
Vorbereitende Schritte
Sie benötigen einen Web-Service-Client, den Sie für das Abrufen von Transportheadern konfigurieren können.
Das Abrufen 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 aus den Transportheadern abzurufen.
Nachdem Sie die Eigenschaft gesetzt haben, werden so lange Werte aus Antworten für die nachfolgenden Methodenaufrufe
für das Stub- bzw. Call-Objekt gelesen, bis die zugeordnete Eigenschaft auf
null gesetzt oder das Stub- bzw. Call-Objekt verworfen wird.
Wenn Sie Werte aus den Transportheadern in eingehenden Antworten abrufen möchten, müssen Sie den Clientcode ändern.
Vorgehensweise
- Erstellen Sie ein Objekt "java.util.HashMap", das die Namen der aus den eingehenden Antwortnachrichten abzurufenden
Transportheader enthält.
- Fügen Sie dem HashMap-Objekt für jeden Header, dessen Wert Sie aus den eingehenden Antwortnachrichten abrufen
möchten, 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 eine ganz bestimmte Weise verarbeitet, aber es werden keine weiteren Prüfungen zur Bestätigung der Headerkennung durchgeführt.
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. Der HashMap-Eintragswert wird ignoriert und muss nicht gesetzt werden.
Eine leere HashMap, d. h. eine Hash-Tabelle, die nicht null ist, aber keine Schlüssel enthält,
bewirkt, dass alle Transportheader in der Antwort abgerufen werden.
- Setzen Sie den HashMap-Eintrag für das Stub- bzw. Call-Objekt mit der Eigenschaft "com.ibm.websphere.webservices.Constants.RESPONSE_TRANSPORT_PROPERTIES". Wenn das HashMap-Objekt definiert ist, wird die Eigenschaft RESPONSE_TRANSPORT_PROPERTIES in den nachfolgenden Aufrufen
verwendet, um die Header aus den Antworten abzurufen.
Wenn Sie die Eigenschaft auf null setzen, werden keine Header aus der Antwort abgerufen.
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 Werte aus den angegebenen Transportheadern werden aus der Antwortnachricht abgerufen und in die HashMap gestellt.
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 Eigenschaftswert, der im Stub- bzw. Call-Objekt gesetzt ist, darf weder
null noch eine Instanz einer HashMap sein.
- Alle HashMap-Schlüssel müssen den Datentyp "String" haben, und die Schlüssel dürfen nicht null sein.
Ergebnisse
Sie haben einen JAX-RPC-Web-Service, der Transportheader aus eingehenden Antwortnachrichten abrufen kann.