Procedimientos recomendados para las propiedades de cabecera de transporte

Puede establecer la propiedad REQUEST_TRANSPORT_PROPERTIES y la propiedad RESPONSE_TRANSPORT_PROPERTIES en un apéndice de cliente JAX-RPC (Java™ API for XML-based RPC), una instancia de llamada o una instancia RequestContext del BindingProvider de JAX-WS (Java API for XML-Based Web services) para habilitar un cliente de servicios web para enviar o recuperar las cabeceras de transporte.

Best practice Best practice: Utilice estos procedimientos recomendados para habilitar un cliente de servicios web para enviar o recuperar cabeceras de transporte.bprac

Procedimientos recomendados para REQUEST_TRANSPORT_PROPERTIES

Algunas cabeceras de transporte, como la cabecera de Cookie HTTP y la cabecera de Cookie2, contienen diversos valores incorporados. En el caso de las cabeceras que contienen diversos valores, el valor de cabecera debe escribirse de la siguiente forma:
  • Cada par nombre=valor incorporado en el valor de cabecera debe separarse por un punto y coma (;).
  • Cada nombre y su valor deben separarse por un signo igual (=).
A continuación se muestra un ejemplo de cómo debe escribirse un valor de cabecera:
name1=value1;name2=value2;name3=value3
Los valores incluidos en la correlación del usuario se podrían analizar antes de añadirse a la solicitud de salida si ésta ya contiene un identificador de cabecera que coincide con uno de la correlación. Para determinadas cabeceras de transporte que contienen varios valores incorporados, los valores de cabecera de la correlación se analizan en componentes individuales nombre=valor. Un punto y coma (;) separa los componentes, por ejemplo, nombre1=valor1;nombre2=valor2. Cada valor name=value se añade a la cabecera de salida a menos que:
  • La cabecera de solicitud de salida contiene un valor nombre.

    En este caso, el nombre=valor de la correlación se ignora de forma silenciosa, lo que impide que se sobrescriba un cliente o que se modifiquen los valores para el valor nombre que ya están definidos en la cabecera de la solicitud de salida por parte del servidor o por parte del motor de servicios web.

  • El valor de cabecera del usuario contiene varios valores nombre.

    Si el valor de la cabecera del usuario contiene varios valores nombre, la primera aparición del valor nombre se utiliza y los otros valores se ignoran de forma silenciosa. Por ejemplo, si el valor de cabecera del usuario contiene name1=value1;name2=value2;name1=value3, donde existen dos apariciones de name1, se utiliza el primer valor, name1=value1. El otro, nombre1=valor3, se ignora de forma silenciosa.

Procedimientos recomendados para RESPONSE_TRANSPORT_PROPERTIES

Sólo se utilizan las claves de correlación; los valores de correlación se ignoran. Los valores se llenan en esta correlación recuperando las cabeceras de transporte, que corresponden a las claves de correlación del mensaje de respuesta de entrada. Una correlación vacía provoca que todas las cabeceras de transporte y los valores asociados se recuperen del mensaje de respuesta de entrada.

Cabeceras HTTP que se procesan bajo consideración especial

A continuación se proporcionan cabeceras HTTP que tienen un trato especial cuando envían y recuperan solicitudes y respuestas HTTP.

Los valores de estas cabeceras pueden establecerse de distintas formas. Por ejemplo, algunos valores de cabecera se envían en función de los valores que hay en un descriptor de despliegue o archivo de enlaces. En estos casos, el valor establecido a través de REQUEST_TRANSPORT_PROPERTIES altera temporalmente los valores establecidos de cualquier otra forma.

Tabla 1. Valores de solicitud y cabecera de respuesta HTTP. Valores que deben especificarse para cabeceras HTTP cuando se envían y recuperan respuestas y solicitudes HTTP.
Cabecera Enviar solicitud Recuperar respuesta
Transfer-encoding
  • La cabecera transfer-encoding se ignora para HTTP 1.0.
  • Al utilizar HTTP 1.1, la cabecera transfer-encoding se establece en troceada si el valor es troceado.
No hay ningún proceso especial.
Connection
  • La cabecera connection se ignora para HTTP 1.0.
  • Al utilizar HTTP 1.1, se establecen los siguientes valores:
    • La cabecera connection se establece en "close" si el valor está establecido en "close".
    • La cabecera connection se establece en "keep-alive" si el valor está establecido en "keep-alive".
    • Los demás valores se ignoran.
No hay ningún proceso especial.
Expect
  • La cabecera expect se ignora para HTTP 1.0.
  • Al utilizar HTTP 1.1, se establecen los siguientes valores:
    • La cabecera connection se establece en "100-continue" si el valor está establecido en "100-continue".
    • Los demás valores se ignoran.
No hay ningún proceso especial.
Host Se ignora No hay ningún proceso especial.
Content-type Se ignora No hay ningún proceso especial.
SOAPAction Se ignora No hay ningún proceso especial.
Content-length Se ignora No hay ningún proceso especial.
Cookie

A continuación se muestra una constante de tipo serie: com.ibm.websphere.webservices.Constants.HTTP_HEADER_COOKIE

El valor se envía en la cabecera, si tiene la estructura correcta. Consulte la información para ver los valores del formato de cabecera y de correlación. No hay ningún proceso especial.
Cookie2

A continuación se muestra una constante de tipo serie: com.ibm.websphere.webservices.Constants.HTTP_HEADER_COOKIE2

Consulte la información en la entrada "Cookie". No hay ningún proceso especial.
Set-cookie

A continuación se muestra una constante de tipo serie: com.ibm.websphere.webservices.Constants.HTTP_HEADER_SET_COOKIE

No hay ningún proceso especial. Si la propiedad MAINTAIN_SESSION se establece en true, todo el valor se guarda en SessionContext.CONTEXT_PROPERTY y se envía en solicitudes subsiguientes en la cabecera Cookie. Si desea más información, consulte la entrada Cookie en esta tabla.
Set-cookie2

A continuación se muestra una constante de tipo serie: com.ibm.websphere.webservices.Constants.HTTP_HEADER_SET_COOKIE2

No hay ningún proceso especial. Si la propiedad MAINTAIN_SESSION se establece en true, todo el valor se guarda en SessionContext.CONTEXT_PROPERTY y se envía en solicitudes subsiguientes en la cabecera Cookie. Si desea más información, consulte la entrada Cookie en esta tabla.

Código de cliente de ejemplo

A continuación aparece un ejemplo sobre cómo puede codificar un cliente de servicios web para enviar y recuperar valores de cabecera de transporte:
public class MyApplicationClass {
    // Inyectar una instancia del tipo de puerto del servicio.
    @WebServiceRef(EchoService.class)
    private EchoPortType port;

    // Este método invocará la operación del servicio web y enviará y recibirá las cabeceras de transporte.
    public void invokeService() {

        // Configure la correlación que contendrá las cabeceras de solicitud.
        Map<String, Object>requestHeaders = new HashMap<String, Object>();
        requestHeaders.put(“Cookie”, “ClientAuthenticationToken=FFEEBBCC”);
        requestHeaders.put(“MyHeaderFlag”, new Boolean(true));

        // Defina la correlación como una propiedad en RequestContext.
        BindingProvider bp = (BindingProvider) port;
        bp.getRequestContext().put(com.ibm.websphere.webservices.Constants.REQUEST_TRANSPORT_PROPERTIES, requestHeaders);

        // Configure la correlación para recuperar las cabeceras de transporte del mensaje de respuesta.
        Map<String, Object>responseHeaders = new HashMap<String, Object>();
        responseHeaders.put(“Set-Cookie”, null);
        responseHeaders.put(“MyHeaderFlag, null);

        // Invoque la operación de servicios web.
        String result = port.echoString(“Hello, world!”);

        // Recupere las cabeceras de la respuesta.
        String cookieValue = responseHeaders.get(“Set-Cookie”);
        String headerFlag = responseHeaders.get(“MyHeaderFlag”);
    }
}

Icon that indicates the type of topic Reference topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwbs_transportheaderproperty
File name: rwbs_transportheaderproperty.html