Dúvida EJB ( MDB ) e Processamento Assíncrono

Fala rapaziada :smiley:

Atualmente tenho um processo que roda em uma Thread assíncrona e acredito que tenha alguma solução melhor do que usar uma Thread em uma aplicação J2EE que roda no OC4J.

Andei pesquisando e encontrei alguns materiais sobre o MDB e muitos falam que ele funcionaria de forma assíncrona, mas fiquei com dúvidas sobre ele ser o que procuro ou não. Vou descrever o cenário que me encontro e me digam se o MDB serviria ou se existem outras soluções, por favor:

  • Tenho os métodos A, C, Classe X que possui o método B. Quando inicio o processamento do método A, eu crio uma instância da classe X e boto para rodar numa Thread, continuo o processamento do A independente do término de execução do run() da classe X, caio no C e termino o fluxo.

O MDB serviria no lugar de uma thread para a classe X?

Obg

Acredito que sim.
Pelo que entendi, vc poderia transformar sua Classe X em um MDB, e ele ficaria “escutando” uma fila de mensagens (Topic/Queue). Essas mensagens ele processa de maneira assíncrona. Assim, qdo ele receber uma mensagem, ele chamaria o método B.

Certo, o MDB sempre tem que retornar algo ou ele pode ser um void ( desculpem a ignorância mas sou totalmente leigo com EJB e só conheço um SBean )?

Obrigado

Todo MDB deve implementar a interface MessageListener e, consequentemente, implementar o método onMessage(Message message), que tratará o recebimento das mensagens produzidas pelos clientes de seu MDB, e esse método não possui retorno.