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
Vorgehensweise
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.
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}
- com.ibm.ws.jaxrs.client.connection.timeout
- 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.portTipp: 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.typeTipp: 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".
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.ClientBuilder cb = ClientBuilder.newBuilder(); Client c = cb.build(); c.property("com.ibm.ws.jaxrs.client.ltpa.handler", "true");
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.
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.ClientBuilder cb = ClientBuilder.newBuilder(); cb.property("com.ibm.ws.jaxrs.client.ssl.config", "mySSLRefId"); Client c = cb.build();
Anmerkung: Die Konfiguration in der Datei "server.xml" sieht wie folgt aus:<ssl id="mySSLRefId" keyStoreRef="clientKeyStore" trustStoreRef="clientTrustStore" />
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:
Weitere Informationen zu SSL-Filtern für abgehende Verbindungen finden Sie unter Filter für abgehende Verbindungen für SSL-Konfigurationen.<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>
- 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:
Weitere Informationen zur SSL-Standardeinstellung für abgehende Verbindungen finden Sie unter SSL-Einstellungen für abgehende Kommunikation konfigurieren.<sslDefault outboundSSLRef=”mySSLRefId” /> <ssl id="mySSLRefId" keyStoreRef="clientKeyStore" trustStoreRef="clientTrustStore"/> <ssl id="defaultSSLConfig" keyStoreRef="defaultKeyStore" />
- Aktivieren Sie das Feature "transportSecurity-1.0" in Ihrer Datei server.xml:
- 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);