Modelo de programación de cliente para métodos asíncronos EJB

Tal como se describe en la especificación de Enterprise JavaBeans (EJB) 3.1, puede invocar los métodos asíncronos EJB a través de los siguientes tipos de interfaz: de empresa local, de empresa remota o de vista sin interfaz. No se permiten invocaciones mediante una vista de cliente EJB 2.1 o una vista de servicios web.

La especificación de interfaz para un método asíncrono EJB debe tener un tipo de retorno vacío o de tipo java.util.concurrent.Future <V>. No se soportan otros tipos de retorno en la interfaz. Tal como se describe en la especificación EJB 3.1, el método de implementación de bean debe tener el mismo tipo de retorno.

Cuando la aplicación no necesita examinar el resultado de una llamada de método asíncrono EJB, utilice una firma de interfaz con un tipo de retorno vacío. Y, a la inversa, cuando la aplicación necesita examinar el resultado de una llamada de método asíncrono EJB, utilice una interfaz con un tipo de retorno de Future<V>>.

Además de tener en cuenta si se examinan los resultados, los clientes deben estar preparados para manejar las excepciones. Tal como se describe en la especificación EJB 3.1, el cliente recibe una excepción si el contenedor no puede asignar los recursos internos necesarios para planificar la ejecución del método asíncrono. En este caso, el cliente puede suponer que el método asíncrono no se ejecuta. Asimismo, se pueden producir excepciones mientras se ejecuta el método asíncrono en la hebra no cliente.

Importante: Cuando un método asíncrono tiene un tipo de retorno de vacío, el cliente no tiene ningún mecanismo para recuperar información de excepción. En este caso, el contenedor EJB registra un mensaje informativo. Sin embargo, para métodos asíncronos que tienen un tipo de retorno de Future<V>, el contenedor EJB guarda información de excepción en el objeto Future<V>. En este caso, los métodos get asociados con el objeto Future<V> producen la excepción, ExecutionException. El cliente debe invocar el método getCause en ExecutionException para recuperar detalles acerca de la excepción.

Los clientes deben saber que los métodos get en el objeto Future<V> bloquean la hebra de cliente si el método asíncrono no ha terminado de ejecutarse cuando se llama al método get. Si los clientes no desean este comportamiento, pueden sondear el objeto Future<V> para determinar cuándo finaliza el método asíncrono llamando periódicamente al método isDone.

Finalmente, los clientes pueden utilizar el objeto Future<V> para cancelar una llamada de método asíncrono. Si intenta cancelar una llamada de método asíncrono mientras espera para ejecutarse, no se ejecutará y otras interacciones con el objeto Future<V> reflejarán la cancelación. De lo contrario, si intenta cancelar un método asíncrono después de que se haya iniciado su ejecución, continuará ejecutándose, pero el método de bean todavía puede determinar igualmente que el cliente ha intentado cancelar la llamada y responder con un valor de retorno específico de la aplicación o una excepción.

Otra alternativa consiste en que el cliente utilice el método get, que incluye un parámetro de tiempo de espera. Este método get sólo espera resultados durante el periodo de tiempo de espera especificado. El método get vuelve al cliente tan pronto como el método termina de ejecutarse o cuando caduca el tiempo de espera, incluso si el método no ha terminado de ejecutarse.

Las llamadas asíncronas anidadas están soportadas; se puede realizar una llamada de método asíncrono desde dentro de un método asíncrono.
Avoid trouble Avoid trouble: Cuando anide llamadas de método asíncrono, tenga en cuenta los valores del gestor de trabajo para permitir que haya recursos suficientes (número máximo de hebras y tamaño de la cola de solicitudes de trabajo). Para obtener más información, consulte la información sobre el gestor de trabajo de contenedor EJB para métodos asíncronos.gotcha

Consulte la información sobre el desarrollo de código de cliente que llama a métodos asíncronos de EJB.


Icon that indicates the type of topic Concept topic



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