É possível ativar um cliente de serviços da Web JAX-RPC (Java™
API for XML-based RPC) existente para recuperar os valores dos cabeçalhos de transporte. Para um pedido que utiliza HTTP, os cabeçalhos de transporte são recuperados dos cabeçalhos
HTTP localizados na mensagem de resposta HTTP. Para um pedido
que utiliza JMS
(Java
Message Service), os cabeçalhos de transporte são recuperados das propriedades
de mensagens JMS localizadas na mensagem de resposta JMS.
Antes de Iniciar
Você precisa de um cliente de serviços da Web que você possa ativar para recuperar cabeçalhos de transporte.
A recuperação de cabeçalhos de transporte é suportada apenas por clientes de serviços da Web, e apenas suportada 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 recuperar os valores dos
cabeçalhos de transporte. Depois que a propriedade for configurada, os valores serão lidos de respostas
para as chamadas do método subsequente na instância Stub ou Call até que
a propriedade associada seja configurada como null ou o objeto Stub
ou Call seja descartado.
Para recuperar valores dos cabeçalhos de transporte
nas respostas de entrada, modifique o código do cliente.
Procedimento
- Crie um objeto java.util.HashMap contendo os nomes dos
cabeçalhos de transporte a serem recuperados das mensagens de resposta de entrada.
- Inclua uma entrada no HashMap para cada cabeçalho que deseja para recuperar
um valor de cada mensagem de resposta de entrada.
- 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 do 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 para confirmar o 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. O
valor de entrada HashMap é ignorado e não precisa ser configurado. Um
HashMap vazio, por exemplo, um que seja não nulo, mas não contenham qualquer
chave, faz com que todos os cabeçalhos de transporte na resposta sejam recuperados.
- Configure a entrada HashMap no objeto Stub ou Call utilizando a propriedade
com.ibm.websphere.webservices.Constants.RESPONSE_TRANSPORT_PROPERTIES. Quando o HashMap for definido, a propriedade RESPONSE_TRANSPORT_PROPERTIES
é utilizada em chamadas subsequentes para recuperar os cabeçalhos das respostas. Se você configurar a propriedade como null, nenhum cabeçalho será
recuperado da resposta. Para aprender mais sobre estas propriedades, consulte a
documentação de propriedades do cabeçalho de transporte.
- Emita as chamadas de método remoto no objeto
Stub ou Call. Os valores dos cabeçalhos de transporte especificados são recuperados da
mensagem de resposta e colocados no HashMap.
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 null ou uma
instância de um HashMap.
- Todas as chaves HashMap devem ter um tipo de dados de cadeia, e as chaves não devem
ser nulas.
Resultados
Você tem um serviço da Web JAX-RPC que pode receber cabeçalhos de transporte de mensagens de respostas recebidas.