Proceso asíncrono

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

Los dos ejemplos siguientes muestran el proceso asíncrono en las API de cliente y servidor:
  • Proceso asíncrono en la API de 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 de 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 Liberty da soporte a EJB y al uso de beans de sesión sin estado y singleton como clases de recursos raíz. Cuando un método EJB se anota con @Asynchronous, el contenedor EJB asigna automáticamente los recursos necesarios para su ejecución. Por lo tanto, en este caso de ejemplo, no es necesario utilizar un ejecutor 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 el control del contenedor EJB. La respuesta se produce invocando la reanudación en la AsyncResponse inyectada. Por lo tanto, el tipo de retorno de longRunningOp está vacío.

Icono que indica el tipo de tema Tema de referencia

Términos y condiciones para centros de información | Comentarios


Icono de indicación de fecha y hora Última actualización: Tuesday, 7 June 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=rwlp_jaxrs2.0_asyn
Nombre de archivo:rwlp_jaxrs2.0_asyn.html