EJB3 e controle de transações

5 respostas
marcelo_mococa

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:

@Stateless
public class EscolaService implements EscolaServiceRemote {

	@PersistenceContext
	private EntityManager em;

	@TransactionAttribute(TransactionAttributeType.MANDATORY)
	public void salvar(Escola e) throws MyException{

		em.persist(e);
		
	}
}

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.

5 Respostas

marcelo_mococa

certo…

veja como ficou o metodo:

public void salvar(Escola e) throws MyException{
		em.persist(e);
		throw new EJBException("teste");
	}

ele não dá o rollback.

o q mais pode ser?

marcelo_mococa

Lancei uma nullpointer e tb não deu rollback?

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

marcelo_mococa

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.

JMan

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

Pois

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

JMan

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

Criado 13 de novembro de 2007
Ultima resposta 13 de nov. de 2007
Respostas 5
Participantes 2