JAX-RS 2.0-Client konfigurieren

Für JAX-RS 2.0 (Java™ API for XML RESTful Web Services) können Sie den Clientzugriff auf REST-Endpunkte konfigurieren. JAX-RS 2.0 führt eine neue und standardisierte Client-API ein, über die Sie HTTP-Anforderungen an Ihre fernen, REST-konformen Web-Services absetzen können.

Informationen zu diesem Vorgang

Für den Zugriff auf eine Webressource über die Client-API ist eine Instanz von Client erforderlich. Die Standardinstanz von Client kann mit einem Aufruf von newClient oder build in ClientBuilder angefordert werden. Nachdem Sie den Client erstellt haben, können Sie ihn auf Serverebene oder in der Clientanwendung konfigurieren.

Vorgehensweise

  1. Aktivieren Sie in Ihrer Datei server.xml wie folgt das Feature jaxrsClient-2.0 oder jaxrs-2.0:
    <featureManager>
        <feature>jaxrs-2.0</feature>// Wenn Sie nur das JAX-RS 2.0-Client-Feature benötigen, können Sie jaxrsClient-2.0 anstelle von jaxrs-2.0 aktivieren.
    </featureManager>
  2. Erstellen Sie einen JAX-RS 2.0-Client und senden Sie die Anforderung an den Server:
    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();        
          }   
    Weitere Informationen zum asynchronen JAX-RS 2.0-Client finden Sie unter Asynchrone Verarbeitung.

Nächste Schritte

Nachdem Sie den JAX-RS 2.0-Client erstellt haben, können Sie ihn durch Definition von webTarget-Elementn in der Datei "server.xml" oder durch programmgestützte Konfiguration von Eigenschaften in der Clientanwendung konfigurieren.

[17.0.0.2 und höher]Konfigurieren Sie die Eigenschaften in der Datei "server.xml" mit dem XML-Element webTarget wie folgt:

<webTarget URI="Wert" property="Wert" property="Wert".../>
Wenn ein webTarget-Objekt instanziiert wird und dessen URI mit dem URI-Wert in diesem Element übereinstimmt, werden die Eigenschaften auf das webTarget-Objekt angewendet. Berücksichtigen Sie beim Definieren des Elements webTarget die folgenden Konfigurationsinformationen:
  • Der URI kann exakt sein, z. B. http://foo, oder er kann mit einem abschließenden Stern (*) enden, z. B. http://foo*. Wenn Sie einen abschließenden Stern (*) verwenden, werden die Eigenschaften auf alle webTarget-Objekte angewendet, deren URI mit http://foo beginnt.
  • Wenn mehrere webTarget-Elemente in der Datei "server.xml" mit dem URI übereinstimmen, werden zuerst exakte Übereinstimmungen und dann Übereinstimmungen mit Platzhalterzeichen sortiert nach URI angewendet.
  • Bei dem Abgleich des Eigenschaftsnamens wird die Groß-/Kleinschreibung nicht beachtet.
  • Es kann jeder angegebene JAX-RS-Eigenschaftsname und -wert verwendet werden. Informationen zu den gekürzten Namen von Konfigurationseigenschaften finden Sie unter webTarget JAX-RS Client Properties.

Gehen Sie wie folgt vor, um Eigenschaften in der JAX-RS 2.0-Anwendung über das Programm zu konfigurieren:

  • Legen Sie mit der Clienteigenschaft com.ibm.ws.jaxrs.client.connection.timeout und der Clienteigenschaft com.ibm.ws.jaxrs.client.receive.timeout den Zeitlimitwert fest.
    • 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();
    Tipp: Der Wert der Zeitlimiteigenschaft wird in Millisekunden angegeben und der Typ muss "Long" oder "Int" sein. Wenn der Typ des Werts ungültig ist, wird folgende Nachricht angezeigt:
    CWWKW0700E: Der Zeitlimitwert {0}, den Sie in der Eigenschaft com.ibm.ws.jaxrs.client.receive.timeout auf der JAX-RS-Client-Seite angegeben haben, ist ungültig. Die Eigenschaft wird auf den Standardwert 30000 gesetzt. {3}
  • Verwenden Sie für die Client-Proxy-Unterstützung die folgenden Clienteigenschaften:
    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
      Tipp: Der Wert für den Proxy-Server-Port muss vom Typ Int sein. Der Standardwert ist 80. Wenn der Typ des Werts ungültig ist, wird folgende Nachricht angezeigt:
      CWWKW0701E: Der Portwert für den Proxy-Server, {0}, den Sie in der Eigenschaft com.ibm.ws.jaxrs.client.proxy.port auf der JAX-RS-Client-Seite angegebenhaben, ist ungültig. Die Eigenschaft wird auf den Standardwert 80 gesetzt. {3}
    • com.ibm.ws.jaxrs.client.proxy.type
      Tipp: Der Proxy-Server muss vom Typ HTTP oder SOCKS sein. Der Standardwert ist HTTP. Wenn der Typ des Proxy-Servers ungültig ist, wird folgende Nachricht angezeigt:
      CWWKW0702E: Der Typwert für den Proxy-Server, {0}, den Sie in der Eigenschaft com.ibm.ws.jaxrs.client.proxy.type auf der JAX-RS-Client-Seite angegebenhaben, ist ungültig. Die Eigenschaft wird auf den Standardwert HTTP gesetzt. {3}
  • Legen Sie mit der Clienteigenschaft com.ibm.ws.jaxrs.client.ltpa.handler das SSO-Cookie fest und setzen Sie den Wert auf "true".
    ClientBuilder cb = ClientBuilder.newBuilder();
            Client c = cb.build();
            c.property("com.ibm.ws.jaxrs.client.ltpa.handler", "true");
    Wenn Sie in JAX-RS 2.0 die SSL-Funktion (Secure Sockets Layer) verwenden möchten, müssen Sie das Feature ssl-1.0 oder appSecurity-2.0 aktivieren. Für die LTPA-Tokenfunktion ist das Feature "appSecurity-2.0" erforderlich.

    Weitere Informationen dazu, wie die Umgebung so konfiguriert wird, dass der JAX-RS 2.0-Client mit SSL über IHS ausgeführt wird, finden Sie unter Configuring IBM HTTP server SSL support.

    Anmerkung: Das Feature ssl-1.0 ist ein untergeordnetes Feature des Features appSecurity-2.0. Wenn Sie das Feature jaxrsClient-2.0 und das Feature ssl-1.0 aktivieren, wird das Feature appSecurity-2.0 automatisch aktiviert.
  • Verwenden Sie die Clienteigenschaft com.ibm.ws.jaxrs.client.ssl.config, um die SSL-Referenz-ID der Datei "server.xml" festzulegen.
    ClientBuilder cb = ClientBuilder.newBuilder();
            cb.property("com.ibm.ws.jaxrs.client.ssl.config", "mySSLRefId"); 
            Client c = cb.build();
    Weitere Informationen zum Herstellen einer Vertrauensbeziehung durch Extraktion des Zertifikats aus der IHS-Schlüsseldatei und Hinzufügen dieses Zertifikats zur Liberty-JKS-Datei finden Sie unter Create a key database file and certificates needed to authenticate the Web server during an SSL handshake.
    Anmerkung: Die Konfiguration in der Datei "server.xml" sieht wie folgt aus:
    <ssl id="mySSLRefId" keyStoreRef="clientKeyStore" trustStoreRef="clientTrustStore" />
  • [17.0.0.3 und höher]Anstatt die Clienteigenschaft "com.ibm.ws.jaxrs.client.ssl.config" über das Programm zu definieren, köännen Sie die SSL-Konfiguration für abgehende Verbindungen zu definieren, dass sich der JAX-RS 2.0-Client auf die SSL-Konfiguration stützt, um die zu verwendende abgehende SSL-Verbindung zu identifizieren.

    Zum Konfigurieren abgehender SSL-Verbindungen können Sie die SSL-Filter für abgehende Verbindungen und/oder die SSL-Standardeinstellung für abgehende Verbindungen konfigurieren. Sie müssen unabhängig davon, welche Kombination von Optionen Sie implementieren, in jedem Fall das Feature "transportSecurity-1.0" aktivieren.

    • Aktivieren Sie das Feature "transportSecurity-1.0" in Ihrer Datei server.xml:
      <featureManager>
          <feature>transportSecurity-1.0</feature>
      </featureManager>
    • Konfigurieren Sie SSL-Filter für abgehende Verbindungen so, dass sie die SSL-Konfiguration für einen Zielhost oder einen Zielhost und einen Zielport angeben.
      Die Konfiguration in der Datei server.xml, die Sie aktualisieren müssen, ist folgende:
      <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>
      Weitere Informationen zu SSL-Filtern für abgehende Verbindungen finden Sie unter Filter für abgehende Verbindungen für SSL-Konfigurationen.
    • Konfiguriere Sie die SSL-Standardeinstellung für abgehende Verbindungen.

      Wenn kein SSL-Filter für den Abgleich der abgehenden Verbindung existiert, verwendet der JAX-RS-Client die SSL-Standardeinstellung für abgehende Verbindungen.

      Die Konfiguration in der Datei server.xml, die Sie aktualisieren müssen, ist folgende:
      <sslDefault outboundSSLRef=”mySSLRefId” /> 
      
      <ssl id="mySSLRefId" keyStoreRef="clientKeyStore" 
      trustStoreRef="clientTrustStore"/>      
      
      <ssl id="defaultSSLConfig" keyStoreRef="defaultKeyStore" />
      Weitere Informationen zur SSL-Standardeinstellung für abgehende Verbindungen finden Sie unter SSL-Einstellungen für abgehende Kommunikation konfigurieren.
  • Inaktivieren Sie die allgemeine Namensprüfung mit der Clienteigenschaft com.ibm.ws.jaxrs.client.disableCNCheck.
    ClientBuilder cb = ClientBuilder.newBuilder();
    cb.property("com.ibm.ws.jaxrs.client.disableCNCheck", true);

Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_jaxrs2.0_clientconfig.html