É possível ativar um cliente de serviços da Web (Java™ API for XML-based RPC) existente para enviar informações definidas pelo aplicativo juntamente com seus pedidos de serviços da Web, utilizando os cabeçalhos de transporte.
Antes de Iniciar
Você precisa de um cliente de serviços da Web JAX-RPC que você possa ativar para enviar cabeçalhos de transporte.
O envio de cabeçalhos de transporte é suportado apenas por clientes de serviços da Web, e apenas suportado para os transportes HTTP e JMS. O cliente de serviços da Web deve chamar as APIs JAX-RPC diretamente e não por meio de quaisquer camadas intermediárias, como uma função de gateway. O envio e a recuperação de cabeçalhos de transporte no servidor de serviços da Web são feitos por meio de APIs de serviços não da Web.
Sobre Esta Tarefa
Ao utilizar o modelo de programação JAX-RPC, o cliente deve configurar
uma propriedade no objeto Stub ou Call para enviar valores nos cabeçalhos de transporte. Depois que a propriedade é configurada, os valores são configurados em todos os pedidos para
chamadas de método remoto subsequentes nesse objeto Stub ou Call até que a propriedade
associada seja configurada como null ou o objeto Stub ou Call seja descartado.
Para
enviar valores nos cabeçalhos de transporte em pedidos de saída, modifique o código
do cliente da seguinte forma:
Procedimento
- Crie um objeto java.util.HashMap que contenha os identificadores de cabeçalho
de transporte.
- Inclua uma entrada para o objeto HashMap para cada cabeçalho de transporte que
quiser que o cliente envie.
- Configure a chave de entrada HashMap como uma cadeia que corresponda exatamente ao identificador de cabeçalho de transporte. É possível definir o identificador de cabeçalho
com um nome de cabeçalho reservado, como Cookie, no caso de HTTP, ou o identificador
de cabeçalho pode ser definido pelo usuário, como MyTransportHeader.
Certos identificadores de cabeçalho são processados de maneira exclusiva, mas não é feita
nenhuma outra verificação em relação ao valor do identificador de cabeçalho. Para obter mais informações sobre os identificadores de cabeçalho HTTP que possuem consideração exclusiva, leia sobre as boas práticas das propriedades de cabeçalho de transporte. É possível localizar as constantes da cadeia do identificador de cabeçalho comum, tal como
HTTP_HEADER_SET_COOKIE na classe com.ibm.websphere.webservices.Constants.
- Configure o valor da entrada HashMap para uma cadeia que contenha o valor
do cabeçalho de transporte.
- Configure a entrada HashMap no objeto Stub ou Call utilizando a propriedade com.ibm.websphere.webservices.Constants.REQUEST_TRANSPORT_PROPERTIES. Quando o valor da propriedade REQUEST_TRANSPORT_PROPERTIES é definido, aquele HashMap
é utilizado em chamadas subsequentes para definir os valores de cabeçalho nos pedidos
que saem. Se o valor da propriedade REQUEST_TRANSPORT_PROPERTIES
for configurado como null, nenhum HashMap será utilizado em chamadas subsequentes
para configurar valores de cabeçalho em pedidos de saída. Para saber mais sobre essas
propriedades, consulte a documentação das propriedades do cabeçalho de transporte.
- Emita as chamadas de método remoto no objeto
Stub ou Call. Os cabeçalhos e os valores associados de HashMap são incluídos no
pedido de saída para cada solicitação de método. Se a chamada utilizar HTTP,
os cabeçalhos de transporte serão enviados como cabeçalhos HTTP dentro do pedido de HTTP. Se a chamada utilizar JMS, os cabeçalhos de transporte serão enviados como propriedades
de mensagem do JMS.
Se a propriedade não estiver configurada corretamente, você poderá encontrar
erros de uso da API que resultarão em um erro JAXRPCException. Os seguintes requisitos devem ser atendidos, ou o processo falhará:
- O valor da propriedade que é configurado no objeto Stub ou Call deve ser um objeto
HashMap ou null.
- O HashMap não pode estar vazio.
- Cada chave no HashMap deve ser um objeto String.
- Cada valor no HashMap deve ser um objeto String.
Resultados
Você tem um cliente de serviços da Web JAX-RPC que está configurado para enviar cabeçalhos de transporte.