Modelo de Programação de Cliente para Métodos Assíncronos EJB

Conforme documentado na especificação Enterprise JavaBeans (EJB) 3.1, é possível chamar métodos assíncronos EJB por meio dos seguintes tipos de interface: negócios locais, negócios remotos ou visualização sem interface. As chamadas feitas por meio de uma visualização do cliente EJB 2.1, ou de uma visualização de serviços da Web, não são permitidas.

A especificação de interface para um método assíncrono EJB deve ter um tipo de retorno void ou um tipo java.util.concurrent.Future <V>. Nenhum outro tipo de retorno é suportado na interface. Conforme documentado na especificação EJB 3.1, o método de implementação de bean deve ter o mesmo tipo de retorno.

Quando seu aplicativo não precisar examinar o resultado de uma chamada de método assíncrono EJB, use uma assinatura de interface com um tipo de retorno void. Opostamente, quando seu aplicativo precisar examinar o resultado de uma chamada de método assíncrono EJB, use uma interface com um tipo de retorno de Future<V>.

Além de considerar se os resultados serão examinados, os clientes devem estar preparados para lidar com exceções. Conforme documentado na especificação EJB 3.1, o cliente recebe uma exceção se o contêiner não puder alocar os recursos internos necessários para o planejamento do método assíncrono para execução. Nesse caso, o cliente pode assumir que o método assíncrono não será executado. Além disso, podem ocorrer exceções enquanto o método assíncrono estiver em execução no encadeamento não cliente.

Importante: Quando um método assíncrono tem um tipo de retorno de void, o cliente não tem um mecanismo para recuperar informações da exceção. O contêiner EJB registra uma mensagem informativa nesse caso. No entanto, para métodos assíncronos com um tipo de retorno de Future<V>, o contêiner EJB salva as informações da exceção no objeto Future<V>. Nesse caso, os métodos get associados ao objeto Future<V> produzem a exceção ExecutionException. O cliente deve chamar o método getCause na ExecutionException para recuperar detalhes sobre a exceção.

Clientes devem saber que os métodos get no objeto Future<V> bloqueiam o encadeamento do cliente se o método assíncrono não tiver concluído a execução quando o método GET for chamado. Se os clientes não quiserem esse comportamento, eles poderão pesquisar o objeto Future<V> para determinar quando o método assíncrono será concluído chamando periodicamente o método isDone.

Por fim, os clientes podem usar o objeto Future<V> para cancelar uma chamada de método assíncrona. Se você tentar cancelar uma chamada de método assíncrona enquanto ela aguarda a execução, ela não será executada e outras interações com o objeto Future<V> refletirão o cancelamento. Caso contrário, se você tentar cancelar um método assíncrono após ele começar a execução, ele continuará sendo executado, mas o método do bean ainda poderá determinar se o cliente tentou cancelar a chamada e poderá responder com uma exceção ou um valor de retorno específico do aplicativo.

Outra alternativa é para o cliente usar o método GET, que inclui um parâmetro de tempo limite. Esse método GET só aguarda resultados durante o período de tempo limite especificado. O método GET retorna para o cliente assim que o método termina a execução, ou quando o tempo limite expira mesmo que o método ainda não tenha terminado a execução.

Chamadas assíncronas aninhadas são suportadas; uma chamada de método assíncrona pode ser feita de dentro de um método assíncrono.
Evitar Problemas Evitar Problemas: Ao aninhar chamadas de método assíncronas, leve em consideração as configurações do gerenciador de trabalho para permitir recursos suficientes (número máximo de encadeamentos e tamanho da fila da solicitação de serviço). Para obter informações adicionais, leia sobre o gerenciador de trabalho de contêiner EJB para métodos assíncronos.gotcha

Consulte "Desenvolvendo Código do Cliente que Chama Métodos Assíncronos EJB".


Ícone que indica o tipo de tópico Tópico de Conceito



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_amclientpmodel
Nome do arquivo: cejb_amclientpmodel.html