Boas Práticas de Propriedades do Cabeçalho de Transporte

É possível configurar a propriedade REQUEST_TRANSPORT_PROPERTIES e a propriedade RESPONSE_TRANSPORT_PROPERTIES em um Stub de cliente Java™ API for XML-based RPC (JAX-RPC), uma instância Chamar ou uma instância RequestContext de BindingProvider doJava API for XML-Based Web Services (JAX-WS) para permitir que um cliente de serviços da Web envie ou recupere os cabeçalhos de transporte.

Boas Práticas Boas Práticas: Utilize as boas práticas para ativar um cliente de serviços da Web a fim de enviar ou recuperar cabeçalhos de transporte.bprac

Boas Práticas do REQUEST_TRANSPORT_PROPERTIES

Alguns cabeçalhos de transporte como o cabeçalho de Cookie HTTP e o cabeçalho Cookie2 contêm vários valores incluídos. Para cabeçalhos que contêm vários valores, o valor do cabeçalho deve ser escrito da seguinte maneira:
  • Cada par name=value incluído no valor do cabeçalho deve ser separado por um ponto-e-vírgula (;).
  • Cada name e seu valor devem ser separados por um sinal de igual (=).
O exemplo a seguir mostra como o valor do cabeçalho deve ser gravado:
name1=value1;name2=value2;name3=value3
Os valores contidos no Mapa do usuário podem ser analisados antes de serem incluídos à solicitação realizada se a solicitação realizada já contiver um identificador de cabeçalho que corresponda um valor no Mapa. Para determinados cabeçalhos de transporte que contiverem vários valores integrados, os valores do cabeçalho no Mapa são analisados nos componentes name=value individuais. Um ponto e vírgula (;) separa os componentes, por exemplo, name1=value1;name2=value2. Cada name=value é anexado ao cabeçalho de saída a menos que:
  • O cabeçalho da solicitação realizada contém um valor nome.

    Nesse caso, o name=value a partir do Mapa é ignorado silenciosamente, impedindo que um cliente sobrescreva ou modifique valores a partir do valor name que já esteja configurado no cabeçalho de solicitação realizada pelo servidor ou mecanismo de serviços da Web.

  • O valor do cabeçalho do usuário contém diversos valores nome.

    Quando o valor do cabeçalho do usuário contém vários valores name, a primeira ocorrência do valor name será usada e os outras são ignoradas silenciosamente. Por exemplo, se o valor do cabeçalho do usuário contiver name1=value1;name2=value2;name1=value3, em que há duas ocorrências de name1, o primeiro valor, name1=value1, será usado. O outro valor, name1=value3, é ignorado de forma silenciosa.

Boas Práticas do RESPONSE_TRANSPORT_PROPERTIES

Apenas as chaves de Mapa são usadas; os valores de Mapa são ignorados. Os valores são preenchidos nesse Mapa ao recuperar os cabeçalhos de transporte que correspondem às chaves de Mapa a partir da mensagem de resposta recebida. Um Mapa vazio faz com que todos os cabeçalhos de transporte e valores associados sejam recuperados a partir da mensagem de resposta recebida.

Cabeçalhos HTTP que São Processados Sob Considerações Especiais

Os cabeçalhos HTTP a seguir têm considerações especiais ao enviar e recuperar respostas e pedidos HTTP.

Os valores desses cabeçalhos podem ser definidos de várias formas. Por exemplo, alguns valores de cabeçalho são enviados com base em definições de um descritor de implementação ou arquivo de ligação. Nesses casos, o valor definido por meio de REQUEST_TRANSPORT_PROPERTIES substitui os valores definidos de outra forma.

Tabela 1. Valores do Cabeçalho de Pedido e Resposta de HTTP. Valores a serem especificados para cabeçalhos HTTP ao enviar e recuperar respostas e pedidos de HTTP.
Cabeçalho Enviar Solicitação Recuperar Resposta
Transfer-encoding
  • O cabeçalho transfer-encoding é ignorado para HTTP 1.0.
  • Ao utilizar HTTP 1.1, o cabeçalho transfer-encoding é definido para chunked se o valor for chunked.
Não há processamento especial.
Conexão
  • O cabeçalho connection é ignorado para HTTP 1.0.
  • Quando HTTP 1.1 é utilizado, os seguintes valores são definidos:
    • O cabeçalho connection é definido como "close" se o valor for definido para "close".
    • O cabeçalho connection é definido como "keep-alive" se o valor for definido para "keep-alive".
    • Todas as outras configurações de valores são ignoradas.
Não há processamento especial.
Expect
  • O cabeçalho expect é ignorado para HTTP 1.0.
  • Quando HTTP 1.1 é utilizado, os seguintes valores são definidos:
    • O cabeçalho connection é definido como "100-continue" se o valor for definido para "100-continue".
    • Todas as outras configurações de valores são ignoradas.
Não há processamento especial.
Host Ignorado Não há processamento especial.
Content-type Ignorado Não há processamento especial.
SOAPAction Ignorado Não há processamento especial.
Content-length Ignorado Não há processamento especial.
Cookie

A seguir é apresentada uma constante de Cadeia: com.ibm.websphere.webservices.Constants.HTTP_HEADER_COOKIE

O valor é enviado no cabeçalho se for estruturado corretamente. Consulte as informações sobre Formato do Valor de Cabeçalho e Valores de Mapa. Não há processamento especial.
Cookie2

A seguir é apresentada uma constante de Cadeia: com.ibm.websphere.webservices.Constants.HTTP_HEADER_COOKIE2

Consulte as informações na entrada "Cookie". Não há processamento especial.
Set-cookie

A seguir é apresentada uma constante de Cadeia: com.ibm.websphere.webservices.Constants.HTTP_HEADER_SET_COOKIE

Não há processamento especial. Se a propriedade MAINTAIN_SESSION for definida para true, o valor inteiro será salvo em SessionContext.CONTEXT_PROPERTY e será enviado em pedidos subsequentes no cabeçalho Cookie. Consulte a entrada Cookie desta tabela para obter informações adicionais.
Set-cookie2

A seguir é apresentada uma constante de Cadeia: com.ibm.websphere.webservices.Constants.HTTP_HEADER_SET_COOKIE2

Não há processamento especial. Se a propriedade MAINTAIN_SESSION for definida para true, o valor inteiro será salvo em SessionContext.CONTEXT_PROPERTY e será enviado em pedidos subsequentes no cabeçalho Cookie. Consulte a entrada Cookie desta tabela para obter informações adicionais.

Código do Cliente de Exemplo

O exemplo a seguir mostra como é possível codificar um cliente de serviços da Web para enviar e recuperar valores de cabeçalho de transporte.
public class MyApplicationClass {
    // Injetar uma instância do tipo de porta de serviço.
    @WebServiceRef(EchoService.class)
    private EchoPortType port;

    // Esse método chamará a operação de serviço da web e enviará e receberá cabeçalhos de transporte.
    public void invokeService() {

        // Configurar o Mapa que conterá os cabeçalhos da solicitação.
        Map<String, Object>requestHeaders = new HashMap<String, Object>();
        requestHeaders.put(“Cookie”, “ClientAuthenticationToken=FFEEBBCC”);
        requestHeaders.put(“MyHeaderFlag”, new Boolean(true));

        // Configurar o Mapa como uma propriedade no RequestContext.
        BindingProvider bp = (BindingProvider) port;
        bp.getRequestContext().put(com.ibm.websphere.webservices.Constants.REQUEST_TRANSPORT_PROPERTIES, requestHeaders);

        // Configurar o Mapa para recuperar cabeçalhos de transporte da mensagem de resposta.
        Map<String, Object>responseHeaders = new HashMap<String, Object>();
        responseHeaders.put(“Set-Cookie”, null);
        responseHeaders.put(“MyHeaderFlag, null);

        // Chamar a operação de serviços da web.
        String result = port.echoString(“Hello, world!”);

        // Recuperar os cabeçalhos da resposta.
        String cookieValue = responseHeaders.get(“Set-Cookie”);
        String headerFlag = responseHeaders.get(“MyHeaderFlag”);
    }
}

Ícone que indica o tipo de tópico Tópico de Referência



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwbs_transportheaderproperty
Nome do arquivo: rwbs_transportheaderproperty.html