Transacoes / Jboss

2 respostas
J

Oi Pessoal,

Estou com o seguinte problema, tenho um stateless session bean que realiza várias chamadas de
pesquisa no entity manager para depois poder realizar a inclusão de uma pessoa e após essa
inclusão, criar um usuário para essa pessoa incluída.

someMethod(Object obj) {

//1 - verificar se esse obj jah existe (Isso eh feito em um método privado)
         someDAO.obter(obj.getParam());
      
       //2 - Realiza outra busca (Isso é feito em um outro método privado)
         someDAO.obter2(obj.getParam2());

      //3 - Realiza inclusao
          someDAO.incluir(obj);

      //4 - criar usuario com login e senha para esse obj
         otherStatelessSessionBean.criarUsuarioSenha(obj);

}

Porém, quando eu chego na linha que tem o 2 comentário, é lancado uma excessao, dizendo que minha transacao nao está ativa:

22:20:42,581 INFO [STDOUT] WARN logExceptions, SQL Error: 0, SQLState: null
22:20:42,582 INFO [STDOUT] ERROR logExceptions, Transaction is not active: tx=TransactionImple < ac, BasicAction: 7f000101:d910:49066334:66 status: ActionStatus.ABORT_ONLY >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: 7f000101:d910:49066334:66 status: ActionStatus.ABORT_ONLY >)
22:20:42,586 ERROR [STDERR] javax.ejb.EJBTransactionRolledbackException: org.hibernate.exception.GenericJDBCException: Cannot open connection

Quando eu coloco a linha no comentário 2 como um método público no stateless session bean, e declaro o tipo de transacao desse método
como NotSupported, o codigo passa da linha 2, realiza a inclusao, mas qndo vai tentar realizar o passo 4, eh lancado uma
excecao dizendo que nao foi encontrado uma chave primaria do obj, que eh utilizada na criacao do usuario.

Para isso funcionar, eu removi o passo 4 desse metodo, e chamo o mesmo logo em seguida a excucao do codigo acima, no cliente.

Alguém passou por esse problema e poderia me dar uma ajuda?

abraco…

Alguem pode me explicar o que estah ocorrendo?

2 Respostas

georgesq

tente abrir a transação no 1o método e informar nos demais o tipo Required, daí ele vai usar o que já existe.

Veja se resolve.

J

Oi,

Obrigado pela resposta, mas você poderia me explicar o que seria abrir a transaçao?

Abs,

Criado 27 de outubro de 2008
Ultima resposta 28 de out. de 2008
Respostas 2
Participantes 2