Clients implementieren, die den REST-Client von Apache Wink verwenden

Sie können den REST-Client von Apache Wink verwenden, um Anforderungen zu senden und Antworten von RESTful-Services zu verarbeiten. Sie können die Client-API in Java™-Programmen verwenden, um mit Web-Services zu kommunizieren.

Informationen zu diesem Vorgang

Standardmäßig verwendet der Apache-Wink-Client die Klasse "java.net.HttpURLConnection" aus der Java-Laufzeitumgebung, um Anforderung auszugeben und Antworten zu verarbeiten. Der Apache-Wink-Client kann auch Apache HttpClient 4.0 als zugrunde liegenden Clienttransport verwenden.

Sie können auch JAX-RS-Entitätsprovider verwenden, um die Serialisierung von Anforderungsentitäten bzw. die Entserialisierung von Antwortentitäten zu unterstützen. Die JAX-RS-Standardprovider, die in den serverseitigen JAX-RS-Services verwendet werden, werden mit dem Client bereitgestellt.

Sie können den Apache-Wink-REST-Client über das Programm oder durch Definition von JVM-Eigenschaften (Java Virtual Machine) konfigurieren.

Zum Implementieren eines Apache-Wink-REST-Clients müssen Sie zuerst ein Objekt "org.apache.wink.client.ClientConfig" erstellen, das anschließend für die Erstellung eines org.apache.wink.client.RestClient verwendet wird. Sie können die Konfigurationseinstellungen für das Objekt "RestClient" über das Programm ändern, oder Sie können JVM-Eigenschaften verwenden, um die ClientConfig-Standardobjektwerte zu ändern.

Wenn Sie die Konfigurationseinstellungen für das Objekt "RestClient" über das Programm konfigurieren möchten, starten Sie die öffentlichen (public) Methoden des Objekts "ClientConfig".
Anmerkung: Nachdem Sie ein Objekt "ClientConfig" für die Erstellung eines Objekts "RestClient" verwendet haben, kann das Objekt "ClientConfig" nicht mehr geändert werden. Ein Änderungsversuch führt zu einer Fehlernachricht des Typs "org.apache.wink.client.ClientConfigException".
Alternativ können Sie die Konfigurationseinstellungen für das Objekt "RestClient" mithilfe von JVM-Eigenschaften konfigurieren, um die ClientConfig-Standardobjektwerte zu ändern. Verwenden Sie die folgenden JVM-Eigenschaften, um die ClientConfig-Standardobjektwerte zu ändern.
wink.client.readTimeout

Diese Eigenschaft gibt an, wie lange (in Millisekunden) das Objekt "RestClient" auf eine Antwort auf Anforderungen wartet, bevor eine Zeitlimitüberschreitung ausgelöst wird. Der Wert 0 bedeutet, dass der Client unbegrenzt wartet und keine Zeitlimitüberschreitung ausgelöst wird.

Der Standardwert ist 60.000 Millisekunden.

wink.client.connectTimeout

Diese Eigenschaft gibt an, wie lange (in Millisekunden) das Objekt "RestClient" auf eine Verbindung zur Zielressource wartet, bevor eine Zeitlimitüberschreitung ausgelöst wird. Der Wert 0 bedeutet, dass der Client unbegrenzt wartet und keine Zeitlimitüberschreitung ausgelöst wird.

Der Standardwert ist 60.000 Millisekunden.

Sie können alle Werte für das Objekt "RestClient", die Sie mit JVM-Eigenschaften angeben, über das Programm ändern. Die programmgesteuerten Werte haben Vorrang vor den JVM-Eigenschaftswerten.

Vorgehensweise

  1. Erstellen Sie ein Objekt "org.apache.wink.client.ClientConfig".
    Das folgende Code-Snippet veranschaulicht, wie ein Objekt "org.apache.wink.client.ClientConfig" erstellt wird:
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    .
    Wenn Sie einen Apache-HTTP-Client als zugrunde liegenden Transport verwenden, erstellen und verwenden Sie stattdessen ein Objekt "org.apache.wink.client.ApacheHttpClientConfig". Das folgende Code-Snippet veranschaulicht, wie ein Objekt "org.apache.wink.client.ApacheHttpClientConfig" erstellt wird:
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ApacheHttpClientConfig();
  2. (Optional) Ändern Sie die ClientConfig-Standardobjektwerte, die Sie für das Objekt "RestClient" verwenden möchten.
    • Sie können die Standardkonfigurationseinstellungen für das Objekt "RestClient" optional über das Programm ändern. Wenn Sie die Konfigurationseinstellungen für das Objekt "RestClient" über das Programm festlegen möchten, starten Sie die öffentlichen (public) Methoden des Objekts "ClientConfig". Beispiel:
      clientConfig.connectTimeout(30000);
      clientConfig.readTimeout(30000);
    • Wenn Sie Thin Client for JAX-RS in einer eigenständigen, nicht verwalteten Clientlaufzeitumgebung verwenden, können Sie die Konfigurationseinstellungen für das Objekt "RestClient" optional mit JVM-Eigenschaften ändern. Definieren Sie die angepassten JVM-Eigenschaften in der JVM, unter der der Thin Client ausgeführt wird.
    • Wenn Sie Thin Client for JAX-RS nicht als eigenständige Clientlaufzeitumgebung verwenden, aber das Objekt "RestClient" in einer Anwendung verwenden, die für die Installation im Anwendungsserver bestimmt ist, können Sie die Konfigurationseinstellungen für das Objekt "RestClient" optional mit JVM-Eigenschaften ändern. Definieren Sie die angepassten JVM-Eigenschaften für Ihren REST-Clientcode, der in einer im Anwendungsserver installierten Anwendung ausgeführt wird, über die Administrationskonsole. Einzelheiten zur Verwendung der Administrationskonsole für die Definition dieser angepassten JVM-Eigenschaften finden Sie in der Beschreibung der angepassten JVM-Eigenschaften.
  3. Optional: Wenn Sie einen angepassten Entitätsprovider verwenden, verwenden Sie die Clientkonfiguration, um den Entitätsprovider hinzuzufügen.
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    
    javax.ws.rs.core.Application app = new javax.ws.rs.core.Application() {
           public Set<Class<?>> getClasses() {
               Set<Class<?>> classes = new HashSet<Class<?>>();
               classes.add(MyCustomEntityProvider.class);
               return classes;
           }
    };
    clientConfig.applications(app);
  4. Erstellen Sie ein Objekt "org.apache.wink.client.RestClient" mit der Clientkonfiguration.
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    
    javax.ws.rs.core.Application app = new javax.ws.rs.core.Application() {
           public Set<Class<?>> getClasses() {
               Set<Class<?>> classes = new HashSet<Class<?>>();
               classes.add(MyCustomEntityProvider.class);
               return classes;
           }
    };
    clientConfig.applications(app);
    
    org.apache.wink.client.RestClient client = new org.apache.wink.client.RestClient(clientConfig);
  5. Erstellen Sie ein Objekt "org.apache.wink.client.Resource" mit einem URI vom REST-Client.
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    
    javax.ws.rs.core.Application app = new javax.ws.rs.core.Application() {
           public Set<Class<?>> getClasses() {
               Set<Class<?>> classes = new HashSet<Class<?>>();
               classes.add(MyCustomEntityProvider.class);
               return classes;
           }
    };
    clientConfig.applications(app);
    
    org.apache.wink.client.RestClient client = new org.apache.wink.client.RestClient(clientConfig);
    
    org.apache.wink.client.Resource resource = client.resource(“http://www.example.com/rest/api/book/123”);
  6. Sie können Anforderungsheader zur anstehenden Anforderung hinzufügen, indem Sie Methoden zum Ressourcenobjekt hinzufügen.
    Sie können eine Java-Methode wie z. B. post() aufrufen und den Anforderungsinhalt als Parameter verwenden, um die Anforderung zu senden. Im folgenden Beispiel wird eine HTTP-POST-Anforderung mit dem Content-Type-Wert text/plain und dem Accept-Headerwert */* abgesetzt.
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    
    javax.ws.rs.core.Application app = new javax.ws.rs.core.Application() {
           public Set<Class<?>> getClasses() {
               Set<Class<?>> classes = new HashSet<Class<?>>();
               classes.add(MyCustomEntityProvider.class);
               return classes;
           }
    };
    clientConfig.applications(app);
    
    org.apache.wink.client.RestClient client = new org.apache.wink.client.RestClient(clientConfig);
    
    org.apache.wink.client.Resource resource = client.resource(“http://www.example.com/rest/api/book/123”);
    
    ClientResponse response = resource.contentType(“text/plain”).accept(“*/*”).post(“The request body as a string”);
    Anstatt resource.post("The request body as a string") mit einem String-Objekt aufzurufen, können Sie jedes andere Objekt, das eine Klasse mit einem gültigen javax.ws.rs.ext.MessageBodyWriter-Objekt hat, verwenden, z. B. eine annotierte JAXB-Klasse, ein byte[] oder eine angepasste Klasse mit einem angepassten Entitätsprovider.
  7. Bearbeiten Sie die Antwort mit dem Statuscode, den Antwortheadern oder dem Text der Antwortnachricht.
    org.apache.wink.client.ClientConfig clientConfig = new org.apache.wink.client.ClientConfig();
    
    javax.ws.rs.core.Application app = new javax.ws.rs.core.Application() {
           public Set<Class<?>> getClasses() {
               Set<Class<?>> classes = new HashSet<Class<?>>();
               classes.add(MyCustomEntityProvider.class);
               return classes;
           }
    };
    clientConfig.applications(app);
    
    org.apache.wink.client.RestClient client = new org.apache.wink.client.RestClient(clientConfig);
    
    org.apache.wink.client.Resource resource = client.resource(“http://www.example.com/rest/api/book/123”);
    
    ClientResponse response = resource.contentType(“text/plain”).accept(“*/*”).post(“The request body as a string”);
        
    System.out.println(“The response code is: “ + response.getStatusCode());
    System.out.println(“The response message body is: “ + response.getEntity(String.class));
    Anstatt response.getEntity(String.class) mit einem String.class-Datei aufzurufen, können Sie jede andere Klasse, die ein gültiges javax.ws.rs.ext.MessageBodyReader-Objekt hat, verwenden, z. B. eine annotierte JAXB-Klasse, ein byte[] oder eine angepasste Klasse mit einem angepassten Entitätsprovider.
  8. (Optional) Konfigurieren Sie den Client so, dass er Sicherheitstoken für die Basisauthentifizierung überträgt. Zum Konfigurieren der Basisauthentifizierung für Ihren Client können Sie die entsprechenden HTTP-Header selbst verwalten oder die bereitgestellte Klasse "BasicAuthSecurityHandler" verwenden. Die Klasse "BasicAuthSecurityHandler" vereinfacht die Aktivierung der Basisauthentifizierung in der Wink-Clientanwendung. Weitere Informationen zur Verwendung des Sicherheitsclienthandlers zur Durchführung der HTTP-Basisauthentifizierung finden Sie im Artikel, der sich mit dem Sichern von JAX-RS-Anwendungen im Web-Container befasst.

Ergebnisse

Sie haben einen JAX-RS-Client mit dem REST-Client von Apache Wink implementiert, der Anforderungen an eine JAX-RS-Anwendung absetzen kann.


Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_impl_client_winkrestclient
Dateiname:twbs_jaxrs_impl_client_winkrestclient.html