Puede habilitar un cliente de servicios web JAX-RPC (API de Java™ para RPC basado en XML) para enviar información definida por la aplicación junto con las solicitudes de servicios web utilizando las cabeceras de transporte.
Antes de empezar
Es necesario disponer un cliente de servicios web JAX-RPC que puede habilitar para enviar cabeceras de transporte.
El envío de cabeceras de transporte sólo está soportado por clientes de servicios web y sólo
para transportes HTTP y JMS. El cliente de servicios web debe llamar directamente a las API JAX-RPC y no a
través de capas intermediarias, como una función de tipo pasarela. El envío y la recuperación de las cabeceras de transporte en el servidor de servicios web
se realiza a través de API de servicios que no son web.
Acerca de esta tarea
Cuando se utiliza el modelo de programación JAX-RPC, el cliente debe establecer
una propiedad en el objeto Stub o Call para enviar valores en las cabeceras de transporte.
Después de establecer la propiedad, los valores se definen en todas las solicitudes de invocaciones a métodos remotos siguientes sobre dicho objeto Stub o Call hasta que la propiedad asociada se establece en null o el objeto Stub o Call se descarta.
Para enviar valores en las cabeceras de transporte de las solicitudes de salida, modifique el código de cliente de esta forma:
Procedimiento
- Cree un objeto java.util.HashMap que contenga los identificadores de la cabecera de transporte.
- Añada una entrada al objeto HashMap de cada cabecera de transporte que desea que envíe el cliente.
- Establezca la clave de la entrada de HashMap en una serie que coincida exactamente con el identificador de la cabecera de transporte. Puede definir el identificador de la cabecera como un nombre de cabecera reservado, por ejemplo, como una cookie en el caso de HTTP, o puede ser un identificador de cabecera definido por el usuario como, por ejemplo, MyTransportHeader.
Determinados identificadores de cabecera se procesan de una forma única, aunque no se realizan más comprobaciones que el valor de identificador de cabecera. Para obtener más información sobre los identificadores de cabecera HTTP que tienen una consideración única, consulta los métodos recomendados de las propiedades de la cabecera de transporte. En la clase com.ibm.websphere.webservices.Constants se pueden encontrar constantes de series de identificadores de cabecera comunes, como HTTP_HEADER_SET_COOKIE.
- Establezca el valor de la entrada HashMap en una serie que contenga el valor de la cabecera de transporte.
- Establezca la entrada HashMap en el objeto Stub o Call mediante la propiedad com.ibm.websphere.webservices.Constants.REQUEST_TRANSPORT_PROPERTIES. Cuando se establece el valor de la propiedad REQUEST_TRANSPORT_PROPERTIES, dicho HashMap
se utiliza en invocaciones subsiguientes para establecer los valores de cabecera en las solicitudes
de salida. Si el valor de la propiedad REQUEST_TRANSPORT_PROPERTIES se establece en null, no se utiliza ningún HasMap en invocaciones subsiguientes para establecer valores de cabecera en las peticiones de salida. Para obtener más información acerca de estas propiedades, consulte la documentación sobre las propiedades de cabecera de transporte.
- Emita llamadas de método remoto a través del objeto Stub o Call. Las cabeceras y los valores asociados
del HashMap se añaden a la solicitud de salida para cada invocación del método. Si la invocación utiliza HTTP,
las cabeceras de transporte se envían como cabeceras HTTP dentro de la solicitud HTTP.
Si la invocación utiliza JMS,
las cabeceras de transporte se envían como propiedades de mensaje JMS.
Si la propiedad no se establece correctamente, es posible que se produzcan errores de uso de la API que generen un error JAXRPCException. Deben cumplirse los siguientes requisitos o el proceso fallará:
- El valor de propiedad establecido en el objeto Stub o Call debe ser un objeto HashMap o null.
- HashMap no puede estar vacío.
- Cada clave de HashMap debe ser un objeto serie.
- Cada valor de HashMap debe ser un objeto serie.
Resultados
Dispone de un cliente de servicios web JAX-RPC que se ha configurado para enviar cabeceras de transporte.