Rollback de transação EJB mata ações em catch?

4 respostas
Fox_McCloud

Tenho um MDB com um try / catch.

Dentro do Try eu chamo um SessionBean com uma transação “required”.

Esse SessionBean captura qualquer Exception e dispara uma EJBException.

No catch do MDB eu envio a mensagem recebida para outra fila.

O detalhe é… a mensagem não está chegando na outra fila.

Será que o rollback automático da transação EJB desfaz a ação do meu catch?

Aceito sugestões, obrigado.

:wink:

4 Respostas

P

O catch deve chamar um método em uma nova transação (utilizando REQUIRES_NEW).

Fox_McCloud

Precisamente. O bloco catch chama um SessionBean com um método transacionado com “RequiresNew” para enviar a mensagem para a outra fila, e não está chegando na outra fila…

Sendo que esta fila está testada, o “publisher” e o “listener” (MDB) também…

P

Certo, basicamente é isso. A mensagem deve ser recebida mesmo que a primeira transação sofra rollback, pois você chamou em uma nova transação. O problema deve ser em outro ponto.

Verifique no console jmx do servidor se a fila realmente não recebeu a mensagem;

Bom, poste o código.

Fox_McCloud

pozzo:
Certo, basicamente é isso. A mensagem deve ser recebida mesmo que a primeira transação sofra rollback, pois você chamou em uma nova transação. O problema deve ser em outro ponto.

Verifique no console jmx do servidor se a fila realmente não recebeu a mensagem;

Bom, poste o código.


Não recebeu mesmo…

Hum…

Não posso postar o código pq é sigiloso!

Mais idéias?

:wink:

Criado 6 de fevereiro de 2009
Ultima resposta 6 de fev. de 2009
Respostas 4
Participantes 2