Proceso asíncrono

Puede utilizar la técnica de proceso asíncrono de JAX-RS 2.0 para procesar hebras. El proceso asíncrono está soportado en la API del cliente y en las API del servidor. Para obtener más información acerca del proceso asíncrono en las API del cliente y del servidor, consulte el Capítulo 8 de JSR 339: JAX-RS 2.0: The Java API for RESTful Web Services (la "Especificación").

Los dos ejemplos siguientes muestran el proceso asíncrono en las API del cliente y del servidor:
  • Proceso asíncrono en la API del cliente:
    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
               } 
    }); 
  • Proceso asíncrono en la API del servidor:
    @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");		
    	         }
    }
La implementación de JAX-RS 2.0 en WebSphere Application Server tradicional da soporte a EJB y a la utilización de beans de sesión sin estado y singleton como clases de recursos raíz. Cuando se anota un método EJB con @Asynchronous, el contenedor EJB automáticamente asigna los recursos necesarios para esta ejecución. Por ello, en este caso de ejemplo, no es necesario utilizar un Ejecutar para generar una respuesta asíncrona. Por ejemplo,
@Stateless
@Path("/")
class EJBResource {

	@GET @Asynchronous
	public void longRunningOp(@Suspended AsyncResponse ar) {
		executeLongRunningOp();
		ar.resume("Hello async world!");
	}
}
La gestión de hebras explícita no es necesaria en este caso porque está bajo control del contenedor EJB. La respuesta se genera mediante la reanudación de la llamada en AsyncResponse incluido. Así pues, el tipo de retorno de longRunningOp es void.

Icon that indicates the type of topic Reference topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rwbs_jaxrs2
File name: rwbs_jaxrs2.0_async.html