Asynchrone Verarbeitung

Sie können das Verfahren der asynchronen Verarbeitung in JAX-RS 2.0 verwenden, um Threads zu verarbeiten. Die asynchrone Verarbeitung wird sowohl in der Client-API als auch in den Server-APIs unterstützt. Weitere Informationen zur asynchronen Verarbeitung in den Client- und Server-APIs finden Sie in Kapitel 8 der Spezifikation JSR 339: JAX-RS 2.0: The Java API for RESTful Web Services.

Die folgenden zwei Beispiele zeigen die asynchrone Verarbeitung in den Client- und Server-APIs:
  • Asynchrone Verarbeitung in der Client-API:
    Client client = ClientBuilder.newClient();
    WebTarget target = client.target("http://example.org/customers/{id}");
    target.resolveTemplate("id", 123).request().async().get(
       new InvocationCallbackCustomer() {       
              @Override
               public void completed(Customer customer) { 
                  // Verarbeitung
               }       
              @Override 
               public void failed(Throwable throwable) {
                  // Prozessfehler
               } 
    }); 
  • Asynchrone Verarbeitung in der Server-API:
    @Path("/async")
    public class MyResource {
    
              @GET
               public void getAsync(@Suspended final AsyncResponse asyncResponse){ 
                  CompletionCallback callBack = new CompletionCallback(){		
    	                    @Override
    	                    public void onComplete(Throwable throwable) {
    	                          	...
    	                    }
    		             };		 
    	            asyncResponse.register(callBack);	    
    	            asyncResponse.resume("some Response");		    
    	         }
    }
Die JAX-RS-2.0-Implementierung in WebSphere Application Server Traditional unterstützt EJBs und die Verwendung von Stateless und Singleton-Session-Beans als Stammressourcenklassen. Wenn eine EJB-Methode mit @Asynchronous annotiert ist, ordnet der EJB-Container automatisch die erforderlichen Ressourcen für die Ausführung zu. In diesem Beispiel ist daher die Verwendung eines Steuerprogramms für das Generieren einer asynchronen Antwort nicht erforderlich. Beispiel:
@Stateless
@Path("/")
class EJBResource {

	@GET @Asynchronous
	public void longRunningOp(@Suspended AsyncResponse ar) {
		executeLongRunningOp();
		ar.resume("Hello async world!");
	}
}
Explizites Thread-Management ist hier nicht erforderlich, da alles vom EJB-Container gesteuert wird. Die Antwort wird durch die Aufrufwiederaufnahme der injizierten AsyncResponse produziert. Somit ist der Rückgabetyp von longRunningOp "void".

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



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