Configuration du client JAX-RS 2.0

Dans l'API Java™ pour XML RESTful Web Services 2.0, vous pouvez configurer le client pour accéder aux points d'extrémité REST. JAX-RS 2.0 introduit une nouvelle API client normalisée grâce à laquelle vous pouvez effectuer des demandes http vers vos services Web RESTful distants.

Pourquoi et quand exécuter cette tâche

Une instance du Client est requise pour accéder à une ressource Web à l'aide de l'API client. L'instance par défaut du client peut être obtenue par l'appel de newClient ou build sur ClientBuilder. Après avoir créé le client, vous pouvez le configurer au niveau du serveur ou au sein de l'application client.

Procédure

  1. Activez la fonction jaxrsClient-2.0 ou jaxrs-2.0 dans votre fichier server.xml :
    <featureManager>
        <feature>jaxrs-2.0</feature>// If you only need the JAX-RS 2.0 client feature, you can enable jaxrsClient-2.0 instead of  jaxrs-2.0 
    </featureManager>
  2. Créez un client JAX-RS 2.0 et envoyez la demande suivante au serveur :
    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();        
          }   
    Pour en savoir plus sur le client JAX-RS 2.0 asynchrone, voir Traitement asynchrone.

Que faire ensuite

Après avoir créé le client JAX-RS 2.0, vous pouvez le configurer soit en définissant les éléments webTarget dans le fichier server.xml, soit en configurant les propriétés à l'aide d'un programme dans l'application client.

[17.0.0.2 and later]Pour configurer les propriétés dans le fichier server.xml avec l'élément XML webTarget :

<webTarget URI="value" property="value" property="value".../>
Lorsqu'un objet webTarget est instancié et son URI correspond à la valeur de l'URI de cet élément, les propriétés sont appliquées à l'objet webTarget. Prenez en compte les informations suivantes lorsque vous définissez l'élément webTarget :
  • L'URI peut être exact, comme http://foo ou se terminer par un caractère *, comme par exemple http://foo*. Lorsque vous utilisez un caractère *, les propriétés sont appliquées à tous les objets webTarget ayant un URI commençant par http://foo.
  • Si plusieurs éléments webTarget correspondent à l'URI dans le fichier server.xml, les correspondances exactes sont appliquées en premier, suivies des correspondances génériques, triés par URI.
  • La correspondance des noms de propriétés est sensible à la casse.
  • N'importe quel nom de propriété JAX-RS fourni et n'importe quelle valeur peuvent être utilisés. Pour trouver les noms abrégés des propriétés de configuration, voir Propriétés client webTarget JAX-RS.

Pour configurer les propriétés à l'aide d'un programme dans l'application JAX-RS 2.0 :

  • Utilisez la propriété client com.ibm.ws.jaxrs.client.connection.timeout et la propriété client com.ibm.ws.jaxrs.client.receive.timeout pour définir la valeur de délai.
    • 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();
    Conseil : La valeur de la propriété de délai d'attente est exprimée en millisecondes et le type doit être long ou int. Si le type de la valeur n'est pas valide, le message suivant s'affiche :
    CWWKW0700E: La valeur de délai d'attente {0} spécifiée dans la propriété com.ibm.ws.jaxrs.client.receive.timeout côté client JAX-RS n'est pas valide. La valeur par défaut a été appliquée. {3}
  • Utilisez les propriétés client suivantes pour la prise en charge du proxy client :
    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
      Conseil : La valeur du port du serveur proxy doit être du type Int. La valeur par défaut est 80. Si le type de la valeur n'est pas valide, le message suivant s'affiche :
      CWWKW0701E: La valeur du port de serveur proxy {0} que
      vous avez spécifiée dans la propriété com.ibm.ws.jaxrs.client.proxy.port côté client JAX-RS n'est pas valide. La valeur par défaut 80 a été appliquée. {3}
    • com.ibm.ws.jaxrs.client.proxy.type
      Conseil : La valeur du type de serveur proxy doit être HTTP ou SOCKS. La valeur par défaut est HTTP. Si le type du serveur proxy n'est pas valide, le message suivant s'affiche :
      CWWKW0702E: La valeur du type de serveur proxy {0} que vous avez spécifiée dans la propriété com.ibm.ws.jaxrs.client.proxy.type côte client JAX-RS n'est pas valide. La valeur par défaut HTTP a été appliquée. {3}
  • Utilisez la propriété client com.ibm.ws.jaxrs.client.ltpa.handler pour définir le cookie SSO et définir la valeur sur true.
    ClientBuilder cb = ClientBuilder.newBuilder();
            Client c = cb.build();
            c.property("com.ibm.ws.jaxrs.client.ltpa.handler", "true");
    Si vous voulez utiliser la fonctionnalité Secure Sockets Layer (SSL) dans JAX-RS 2.0, vous devez activer la fonction ssl-1.0 ou appSecurity-2.0. Pour la fonction de jeton LTPA, la fonction appSecurity-2.0 est requise.

    Pour en savoir plus sur la configuration de l'environnement pour que le client JAX-RS 2.0 s'exécute avec SSL via IHS, voir Configuration de la prise en charge SSL du serveur HTTP IBM®.

    Remarque : La fonction ssl-1.0 est une sous-fonction de la fonction appSecurity-2.0. Si vous activez la fonction jaxrsClient-2.0 et la fonction ssl-1.0, la fonction appSecurity-2.0 est activée automatiquement.
  • Utilisez la propriété client com.ibm.ws.jaxrs.client.ssl.config pour définir l'ID de référence SSL du fichier server.xml.
    ClientBuilder cb = ClientBuilder.newBuilder();
            cb.property("com.ibm.ws.jaxrs.client.ssl.config", "mySSLRefId"); 
            Client c = cb.build();
    Pour en savoir plus sur l'établissement d'une relation de confiance via l'extraction du certificat du fichier de clé IHS et son ajout au fichier JKS Liberty, voir Create a key database file and certificates needed to authenticate the Web server during an SSL handshake.
    Remarque : La configuration définie dans le fichier server.xml se présente comme suit :
    <ssl id="mySSLRefId" keyStoreRef="clientKeyStore" trustStoreRef="clientTrustStore" />
  • [17.0.0.3 and later]Au lieu de définir la propriété client com.ibm.ws.jaxrs.client.ssl.config, configurez le SSL sortant de manière à ce que le client JAX-RS 2.0 puisse se baser sur la configuration SSL pour identifier le SSL sortant à utiliser.

    Pour configurer le SSL sortant, vous pouvez configurer à la fois les filtres SSL sortants et le SSL sortant par défaut, ou configurer l'une des deux options. Quelle que soit la combinaison d'options implémentée, vous devez activer la fonction transportSecurity-1.0.

    • Activez la fonction transportSecurity-1.0 dans votre fichier server.xml :
      <featureManager>
          <feature>transportSecurity-1.0</feature> 
      </featureManager>
    • Configurez les filtres SSL sortants pour qu'ils spécifient la configuration SSL d'un hôte de destination, ou à la fois un hôte de destination et un port de destination.
      La configuration du fichier server.xml à mettre à jour est la suivante :
      <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>
      Pour en savoir plus sur les filtres SSL sortants, voir Filtres sortants pour configurations SSL.
    • Configurez le SSL sortant par défaut.

      Si aucun filtre SSL ne correspond à la connexion sortante, le client JAX-RS utilise le SSL sortant par défaut.

      La configuration du fichier server.xml à mettre à jour est la suivante :
      <sslDefault outboundSSLRef=”mySSLRefId” /> 
      
      <ssl id="mySSLRefId" keyStoreRef="clientKeyStore" 
      trustStoreRef="clientTrustStore"/>      
      
      <ssl id="defaultSSLConfig" keyStoreRef="defaultKeyStore" />
      Pour en savoir plus sur la configuration SSL sortante par défaut, voir Configuration des paramètres SSL pour les communications sortantes.
  • Utilisez la propriété client com.ibm.ws.jaxrs.client.disableCNCheck pour désactiver la vérification de nom usuel.
    ClientBuilder cb = ClientBuilder.newBuilder();
    cb.property("com.ibm.ws.jaxrs.client.disableCNCheck", true);

Icône indiquant le type de rubrique Rubrique Tâche

Nom du fichier : twlp_jaxrs2.0_clientconfig.html