Vous pouvez activer un client existant de services Web JAX- RPC (Java™ API for XML-based RPC)
afin que des informations définies par l'application puissent être envoyées en même temps que vos demandes de service Web par le biais d'en-têtes de transport.
Avant de commencer
Vous avez besoin d'un client de services Web JAX-RPC qui peut être activé pour
envoyer des en-têtes de transport.
L'envoi d'en-têtes de transport est pris en charge uniquement par
les clients de services web, et uniquement pour les transports HTTP et JMS. Le client de services web
doit appeler directement les API JAX-RPC et ne pas passer par les couches
intermédiaires, comme la fonction de passerelle. L'envoi et l'extraction d'en-têtes
de transport côté serveur de services Web s'effectuent via des API de services non Web.
Pourquoi et quand exécuter cette tâche
Quand le modèle de programmation JAX-RPC est utilisé, le client doit définir
une propriété sur l'objet Stub ou Call pour l'envoi de valeurs dans les en-têtes de transport. Une fois la propriété définie, les valeurs sont définies pour toutes les demandes liées
aux appels de méthode distante ultérieurs sur l'objet Stub ou Call jusqu'à ce que
la propriété associée soit définie à null ou que l'objet Stub ou Call soit supprimé.
Pour
envoyer des valeurs dans des en-têtes de transport sur des demandes sortantes, modifiez le code client
comme suit :
Procédure
- Créez un objet java.util.HashMap contenant les identificateurs d'en-tête de transport.
- Ajoutez une entrée à l'objet HashMap pour chaque en-tête de transport que le client doit envoyer.
- Définissez la clé d'entrée HashMap en une chaîne correspondant exactement
à l'identificateur de l'en-tête de transport. L'identificateur d'en-tête
peut être défini par vous-même avec un nom d'en-tête réservé, comme Cookie dans le cas d'un transport HTTP, ou
par l'utilisateur (par exemple, MyTransportHeader).
Certains identificateurs d'en-tête sont traités de manière unique, mais
aucune autre vérification n'est effectuée pour la valeur des identificateurs
d'en-tête. Pour plus de détails sur les
identificateurs d'en-tête HTTP, voir les rubriques relatives aux valeurs recommandées pour les propriétés d'en-tête. Vous pouvez définir des constantes de chaînes d'identificateur d'en-têtes courantes, telles que HTTP_HEADER_SET_COOKIE figurant dans la classe com.ibm.websphere.webservices.Constants.
- Définissez comme valeur de l'entrée HashMap une chaîne contenant la valeur de l'en-tête de transport.
- Définissez l'entrée HashMap pour l'objet Stub ou Call à l'aide de la propriété com.ibm.websphere.webservices.Constants.REQUEST_TRANSPORT_PROPERTIES. Lorsque la valeur de la propriété REQUEST_TRANSPORT_PROPERTIES est
définie, ce HashMap est utilisé dans les appels ultérieurs pour définir les valeurs
d'en-tête dans les demandes sortantes. Si la valeur de la propriété REQUEST_TRANSPORT_PROPERTIES
est null, aucun HashMap n'est utilisé dans les appels ultérieurs pour définir les valeurs
d'en-tête dans les demandes sortantes. Pour plus de détails sur ces propriétés, consultez la
documentation sur les propriétés d'en-tête de transport.
- Lancez les appels de méthode distante sur l'objet Stub ou Call. Les en-têtes et les valeurs associées de HashMap sont ajoutés à la
demande sortante pour chaque appel de méthode. Si l'appel utilise HTTP, les en-têtes de transport sont envoyés en tant qu'en-têtes HTTP dans la demande HTTP. Si elle utilise JMS, les en-têtes sont envoyés en tant que propriétés de message JMS.
Si la propriété n'est pas définie correctement, des erreurs liées à l'utilisation de l'API
peuvent se produire et générer une erreur JAXRPCException. Les exigences suivantes doivent être remplies, faute de quoi le processus échouera :
- La valeur de la propriété définie pour l'objet Stub ou Call doit être un objet HashMap,
ou être null.
- Le HashMap ne doit pas être vide.
- Chaque clé du HashMap doit être un objet String.
- Chaque valeur du HashMap doit être un objet String.
Résultats
Vous disposez d'un client de services Web JAX-RPC configuré pour l'envoi
d'en-têtes de transport.