Traitement asynchrone

Vous pouvez utiliser la technique de traitement asynchrone dans JAX-RS 2.0 pour traiter les unités d'exécution. Le traitement asynchrone est pris en charge sur les API client et les API serveur. Pour plus d'informations sur le traitement asynchrone dans les API client et serveur, voir le chapitre 8 du document JSR 339: JAX-RS 2.0: The Java API for RESTful Web Services (la "Spécification").

Les deux exemples suivants illustrent le traitement asynchrone dans les API client et serveur :
  • Traitement asynchrone dans l'API client :
    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) { 
                  // Do something 
               }       
              @Override 
               public void failed(Throwable throwable) {
                  // Process error 
               } 
    }); 
  • Traitement asynchrone dans l'API serveur :
    @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");		    
    	         }
    }
L'implémentation JAX-RS 2.0 dans WebSphere Application Server Traditional prend en charge Enterprise JavaBeans et l'utilisation de beans session singleton et sans état en tant que classes de ressources racine. Lorsqu'une méthode EJB est annotée avec @Asynchronous, le conteneur d'EJB alloue automatiquement les ressources nécessaires pour son exécution. Par conséquent, dans ce scénario, il n'est pas nécessaire d'utiliser un programme d'exécution pour générer une réponse asynchrone. Par exemple,
@Stateless
@Path("/")
class EJBResource {

	@GET @Asynchronous
	public void longRunningOp(@Suspended AsyncResponse ar) {
		executeLongRunningOp();
		ar.resume("Hello async world!");
	}
}
Une gestion des unités d'exécution explicite n'est pas nécessaire dans ce cas, car elle cela s'effectue sous le contrôle du conteneur d'EJB. La réponse est générée en appelant la reprise sur l'élément AsyncResponse injecté. Par conséquent, le type de retour longRunningOp est null (void).

Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwbs_jaxrs2
Nom du fichier : rwbs_jaxrs2.0_async.html