EJB3 e controle de transações  XML
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Autor Mensagem
marcelo_mococa
Virtual Machine Man
[Avatar]

Membro desde: 03/03/2005 10:03:32
Mensagens: 622
Localização: São Paulo
Offline

Fala Galera.

estou encontrando alguns problemas para gerenciar transações com EJB3.

Criei um bean stateless com uma interface remota. Configurei a JPA para persistir os dados. Estou usando jboss, por isso configurei o datasource no mesmo.

Veja meu bean:


criei uma classe de teste para testar este bean. Ela está usando a interface remota para invocar o serviço.

Como percebi que o controle de transação não estava sendo executado, configurei a transação para Mandatory. Minha dúvida foi respondida, não existe uma transação.

Alguém sabe o que está acontencedo?
Porque o conteiner não abriu a transação? Engraçado que ele deu o commit, pois os dados foram persistidos.

att.

Marcelo Madeira - TCS
SCJP 1.5
SCWCD 1.4
blog

Maracuja
GUJ Ranger
[Avatar]

Membro desde: 28/03/2006 10:18:44
Mensagens: 940
Localização: Behind the screen
Offline

É exatamene este o problema; o seu cliente esta em uma transação?

Pois


MANDATORY

The container must invoke an enterprise bean method whose transaction attribute is set to MANDATORY in a client's transaction context. The client is REQUIRED to call with a transaction context.

*

If the client calls with a transaction context, the container performs the same steps as described in the REQUIRED case.
*

If the client calls without a transaction context, the container throws the javax.ejb.EJBTransactionRequiredException. If the EJB 2.1 client view is used, the container throws the javax.transaction.TransactionRequiredException exception if the client is a remote client, or the javax.ejb.TransactionRequiredLocalException if the client is a local client.


by

http://java.boot.by/scbcd5-guide/ch09s03.html

Se não chamou em uma transação, não tem transação;

mude para

REQUIRES_NEW

ou

REQUIRED

[]'s

"Nunca deixarei de reclamar, mas espero reclamar de coisas melhores a cada dia..." Um amigo muito sabio
marcelo_mococa
Virtual Machine Man
[Avatar]

Membro desde: 03/03/2005 10:03:32
Mensagens: 622
Localização: São Paulo
Offline

certo...

veja como ficou o metodo:



ele não dá o rollback.

o q mais pode ser?

Marcelo Madeira - TCS
SCJP 1.5
SCWCD 1.4
blog

Maracuja
GUJ Ranger
[Avatar]

Membro desde: 28/03/2006 10:18:44
Mensagens: 940
Localização: Behind the screen
Offline

EJBException não marca a transação para rollback; Experimente uma RuntimeException;

"Nunca deixarei de reclamar, mas espero reclamar de coisas melhores a cada dia..." Um amigo muito sabio
marcelo_mococa
Virtual Machine Man
[Avatar]

Membro desde: 03/03/2005 10:03:32
Mensagens: 622
Localização: São Paulo
Offline

Lancei uma nullpointer e tb não deu rollback?

será que é alguma coisa na configuração do banco?

Marcelo Madeira - TCS
SCJP 1.5
SCWCD 1.4
blog

marcelo_mococa
Virtual Machine Man
[Avatar]

Membro desde: 03/03/2005 10:03:32
Mensagens: 622
Localização: São Paulo
Offline

consegui resolver.

era no banco de dados mysql. A tabela estava como MyISAM, que não aceita controle de transações. Mudei para InnoDB e funcionou perfeitamente.

Valeu pela ajuda maracuja.

Marcelo Madeira - TCS
SCJP 1.5
SCWCD 1.4
blog

 
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Ir para:   
Powered by JForum 2.1.8 © JForum Team