Configuración del cliente JAX-RS 2.0

Para los servicios web de RESTful 2.0 de la API Java™ para XML, puede configurar el cliente para acceder a puntos finales REST. JAX-RS 2.0 introduce una nueva API de cliente estandarizada para que pueda realizar solicitudes http a los servicios web RESTful remotos.

Acerca de esta tarea

Se necesita una instancia de Client para acceder a un recurso web utilizando la API de cliente. La instancia predeterminada de Client puede obtenerse invocando newClient o build en ClientBuilder. Tras crear el cliente, puede configurarlo en el nivel de servidor o dentro de la aplicación cliente.

Procedimiento

  1. Habilite la característica jaxrsClient-2.0 o jaxrs-2.0 en el archivo server.xml:
    <featureManager>
        <feature>jaxrs-2.0</feature>// Si sólo necesita la característica de cliente JAX-RS 2.0, puede habilitar jaxrsClient-2.0 en lugar de jaxrs-2.0 
    </featureManager>
  2. Cree un cliente JAX-RS 2.0 y envíe la solicitud al servidor:
    javax.ws.rs.client.ClientBuilder cb = ClientBuilder.newBuilder();
    
    javax.ws.rs.client.Client c = cb.build();
    String res = null;
    
    try {
    	res = c.target("<Resource_URL>")
                 .path("<PATH>")
                 .request()
                 .get(String.class);
    	} catch (Exception e) {
          	res = "[Error]:" + e.toString();
          } finally {
                c.close();        
          }   
    Si desea más información sobre cliente JAX-RS 2.0 asíncrono, puede ver Proceso asíncrono.

Qué hacer a continuación

Tras crear el cliente JAX-RS 2.0, puede configurarlo definiendo elementos webTarget en el archivo server.xml o configurando mediante programa propiedades en la aplicación cliente.

[17.0.0.2 and later]Para configurar propiedades en el archivo server.xml con el elemento XML webTarget:

<webTarget URI="valor" property="valor" property="valor".../>
Cuando se crea una instancia de un objeto webTarget y su URI coincide con el valor de URI de este elemento, las propiedades se aplican al objeto webTarget. Tenga en cuenta la información de configuración siguiente al definir el elemento webTarget:
  • El URI puede ser exacto como, por ejemplo, http://foo, o termina con un valor final *, como http://foo*. Al utilizar un valor final *, las propiedades se aplican a cualquier objeto webTarget con un URI que empieza con http://foo.
  • Si más de un elemento webTarget del archivo server.xml coincide con el URI, primero se aplican las coincidencias exactas, las coincidencias de comodín, ordenadas por el URI.
  • La coincidencia de nombre de propiedad no distingue entre mayúsculas y minúsculas.
  • Se puede utilizar cualquier nombre y valor de propiedad JAX-RS proporcionado. Para encontrar los nombres abreviados para propiedades de configuración, consulte Propiedades de cliente JAX-RS webTarget.

Para configurar mediante programas propiedades en la aplicación JAX-RS 2.0:

  • Utilice la propiedad de cliente com.ibm.ws.jaxrs.client.connection.timeout y la propiedad de cliente com.ibm.ws.jaxrs.client.receive.timeout para establecer el valor de tiempo de espera.
    • com.ibm.ws.jaxrs.client.connection.timeout
      javax.ws.rs.client.ClientBuilder cb = ClientBuilder.newBuilder();
              cb.property("com.ibm.ws.jaxrs.client.connection.timeout", "1000"); 
              Client c = cb.build();
    • com.ibm.ws.jaxrs.client.receive.timeout
      javax.ws.rs.client.ClientBuilder cb = ClientBuilder.newBuilder();
              cb.property("com.ibm.ws.jaxrs.client.receive.timeout", "1000"); 
              Client c = cb.build();
    Consejo: El valor de la propiedad timeout está en milisegundos y el tipo debe ser long o int. Si el tipo del valor no es válido, aparece el siguiente mensaje:
    CWWKW0700E: El valor de tiempo de espera {0} que ha especificado en la propiedad
    com.ibm.ws.jaxrs.client.receive.timeout en el lado del cliente JAX-RS no es válido. El valor se establece en 30000 de forma
    predeterminado. {3}
  • Utilice las siguientes propiedades de cliente para el soporte de proxy del cliente:
    ClientBuilder cb = ClientBuilder.newBuilder();
    cb.property("com.ibm.ws.jaxrs.client.proxy.host", "hostname");
    cb.property("com.ibm.ws.jaxrs.client.proxy.port", "8888";);
    cb.property("com.ibm.ws.jaxrs.client.proxy.type", "HTTP");
    
    Client c = cb.build();  
    • com.ibm.ws.jaxrs.client.proxy.host
    • com.ibm.ws.jaxrs.client.proxy.port
      Consejo: El tipo de valor de puerto de servidor proxy debe ser int. El valor predeterminado es 80. Si el tipo de valor no es válido, aparece el siguiente mensaje:
      CWWKW0701E: El valor de puerto de
      servidor proxy {0} que ha especificado en la propiedad com.ibm.ws.jaxrs.client.proxy.port
      en el lado del cliente JAX-RS no es válido. El valor se establece en 80 de forma
      predeterminado. {3}
    • com.ibm.ws.jaxrs.client.proxy.type
      Consejo: El valor del tipo de servidor proxy debe ser HTTP o SOCKS. El valor predeterminado es HTTP. Si el tipo del servidor proxy no es válido, aparece el siguiente mensaje:
      CWWKW0702E: El valor de tipo
      de servidor proxy {0} que ha especificado en la
      propiedad com.ibm.ws.jaxrs.client.proxy.type en el lado del cliente JAX-RS no es válido. El valor se establece en HTTP de forma predeterminado. {3}
  • Utilice la propiedad de cliente com.ibm.ws.jaxrs.client.ltpa.handler para establecer la cookie de SSO y establecer el valor en true.
    ClientBuilder cb = ClientBuilder.newBuilder();
            Client c = cb.build();
            c.property("com.ibm.ws.jaxrs.client.ltpa.handler", "true");
    Si desea utilizar la función SSL (capa de sockets seguros) en JAX-RS 2.0, debe habilitar la característica ssl-1.0 o appSecurity-2.0. Para la función de señal LTPA, es necesaria la característica appSecurity-2.0.

    Si desea más información sobre cómo configurar el entorno para que el cliente JAX-RS 2.0 se ejecute con SSL a través de IHS, consulte Configuración del soporte SSL de servidor IBM® HTTP.

    Nota: La característica ssl-1.0 es una subcaracterística de la característica appSecurity-2.0. Si habilita la característica jaxrsClient-2.0 y la característica ssl-1.0, la característica appSecurity-2.0 se habilita automáticamente.
  • Utilice la propiedad de cliente com.ibm.ws.jaxrs.client.ssl.config para establecer el ID de referencia de SSL de server.xml.
    ClientBuilder cb = ClientBuilder.newBuilder();
            cb.property("com.ibm.ws.jaxrs.client.ssl.config", "mySSLRefId"); 
            Client c = cb.build();
    Si desea más información sobre cómo establecer la confianza extrayendo el certificado del archivo de claves IHS y añadirlo al archivo JKS de Liberty, consulte Crear un archivo de base de datos de claves y certificados necesarios para autenticar el servidor web durante un reconocimiento SSL.
    Nota: La configuración en server.xml se muestra de la forma siguiente:
    <ssl id="mySSLRefId" keyStoreRef="clientKeyStore" trustStoreRef="clientTrustStore" />
  • [17.0.0.3 and later]En lugar de establecer mediante programa la propiedad de cliente com.ibm.ws.jaxrs.client.ssl.config, configure SSL de salida, de forma que el cliente JAX-RS 2.0 puede confiar en la configuración SSL para identificar el SSL de salida que se va a utilizar.

    Para configurar el SSL de salida, puede configurar tanto los filtros SSL de salida, como el valor predeterminado de SSL de salida, o puede configurar una de las dos opciones. No importa qué combinación de opciones implemente, debe habilitar la característica transportSecurity-1.0.

    • Habilite la característica transportSecurity-1.0 en el archivo server.xml:
      <featureManager>
          <feature>transportSecurity-1.0</feature> 
      </featureManager>
    • Configure filtros SSL de salida de forma que especifican la configuración SSL para un host de destino, o tanto un host de destino y un puerto de destino.
      La configuración en el archivo server.xml que va a actualizar es la siguiente:
      <ssl id="mySSLRefId" keyStoreRef="clientKeyStore"
      trustStoreRef="clientTrustStore">
         <outboundConnection host=”myhost.atdomain.com” port=”9443” />       
         <outboundConnection host=”theotherhost.atdomain.com” port=”8020” 
      /> 
      </ssl>
      <ssl id="defaultSSLConfig" keyStoreRef="defaultKeyStore" >
         <outboundConnection host=”defaulthost.domain.com” />      
      </ssl>
      Si desea más información sobre filtros SSL de salida, consulte Filtros de salida para configuraciones SSL.
    • Configure el valor predeterminado de SSL de salida.

      Si no existe ningún filtro SSL para cotejar la conexión de salida, el cliente JAX-RS utiliza el valor predeterminado de SSL de salida.

      La configuración en el archivo server.xml que va a actualizar es la siguiente:
      <sslDefault outboundSSLRef=”mySSLRefId” /> 
      
      <ssl id="mySSLRefId" keyStoreRef="clientKeyStore" 
      trustStoreRef="clientTrustStore"/>      
      
      <ssl id="defaultSSLConfig" keyStoreRef="defaultKeyStore" />
      Si desea más información sobre el valor predeterminado de salida de SSL, consulte Configuración de valores SSL para las comunicaciones de salida.
  • Utilice la propiedad de cliente com.ibm.ws.jaxrs.client.disableCNCheck para inhabilitar la comprobación de nombre común.
    ClientBuilder cb = ClientBuilder.newBuilder();
    cb.property("com.ibm.ws.jaxrs.client.disableCNCheck", true);

Icono que indica el tipo de tema Tema de tarea

Nombre de archivo: twlp_jaxrs2.0_clientconfig.html