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
Procedimiento
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.
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}
- com.ibm.ws.jaxrs.client.connection.timeout
- 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.portConsejo: 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.typeConsejo: 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.
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.ClientBuilder cb = ClientBuilder.newBuilder(); Client c = cb.build(); c.property("com.ibm.ws.jaxrs.client.ltpa.handler", "true");
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.
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.ClientBuilder cb = ClientBuilder.newBuilder(); cb.property("com.ibm.ws.jaxrs.client.ssl.config", "mySSLRefId"); Client c = cb.build();
Nota: La configuración en server.xml se muestra de la forma siguiente:<ssl id="mySSLRefId" keyStoreRef="clientKeyStore" trustStoreRef="clientTrustStore" />
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:
Si desea más información sobre filtros SSL de salida, consulte Filtros de salida para configuraciones SSL.<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>
- 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:
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.<sslDefault outboundSSLRef=”mySSLRefId” /> <ssl id="mySSLRefId" keyStoreRef="clientKeyStore" trustStoreRef="clientTrustStore"/> <ssl id="defaultSSLConfig" keyStoreRef="defaultKeyStore" />
- Habilite la característica transportSecurity-1.0 en el archivo server.xml:
- 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);