bom dia pessoal, estou implementando utilizando transações gerenciadas pelo container (CMT) porém dentro do meu MB, após uma inserção dentro da transação corrente do método chamo uma exception que criei e anotada com @ApplicationException(rollback = true), porém o rollback não é executado segue as partes do código.
//chamada da Exception dentro de um método do Mb.
if(this.caixaAberto().equals(Boolean.FALSE)){
thrownewBusinessException("Favor abrir o caixa");
}
Por favor, poste o restante do código que está com problemas.
R
rogerioeerr
segue o código
try{FinTituloItensnovaParcela=newFinTituloItens();novaParcela.setFinTitulos(this.getBeanTituloItens().getFinTitulos());novaParcela.setTtltnVencimento(this.getBeanTituloItens().getTtltnVencimento());novaParcela.setTtltnStatus("0");novaParcela.setTtltnNumeroParcela(this.getBeanTituloItens().getTtltnNumeroParcela());//calcula o valor para a nova parcelaMoneyvalorNovaParcela=valorAPagar.subtrair(valorPg);novaParcela.setTtltnValor(valorNovaParcela.getAmount());novaParcela.setTtltnObservacao("Gerado devido a baixa parcial refêrente a parcela Nº "+this.getBeanTituloItens().getTtltnNumeroParcela());//salva a nova parcelatituloItensSession.salvar(novaParcela);if(this.caixaAberto().equals(Boolean.FALSE)){thrownewBusinessException("Favor abrir o caixa");}//fluxo de caixaFinFluxoCaixabeanFluxoCaixa=newFinFluxoCaixa();beanFluxoCaixa.setFinCaixa(this.getCaixa());beanFluxoCaixa.setFinTitulosItensFormasPagamento(beanItensFormasPagamento);beanFluxoCaixa.setFlxcxData(Calendar.getInstance().getTime());beanFluxoCaixa.setFlxcxTipo(tipoMovimentacao);beanFluxoCaixa.setFlxcxValor(valorPago);beanFluxoCaixa.setFlxcxStatus("1");fluxoCaixaSession.salvar(beanFluxoCaixa);this.getBeanTituloItens().setTtltnStatus("1");//atualiza a parcelatituloItensSession.salvar(this.getBeanTituloItens());}catch(EJBExceptionex){LastExceptionlastException=newLastException();Throwableth=lastException.findLastException(ex);if(thinstanceofSQLException){contexto.adicionaMensagemErro(newDatabaseException((SQLException)th).getMessage());}else{contexto.adicionaMensagemErro(th.getMessage());}}catch(BusinessExceptionex){contexto.adicionaMensagemErro("Erro: "+ex.getMessage());}catch(Exceptionex){contexto.adicionaMensagemErro("Erro: "+ex.getMessage());}
o código entra na exception passada a seguir normalmente, porém o primeiro insert antes da verificação não é dado o rollback...
dev.rafael
Qual é o tipo desse “tituloItensSession”?
Como está declarado o @TransactionAttribute do seu EJB?
Ainda preciso saber qual é o tipo desse “tituloItensSession” e como ele está declarado no seu EJB. Caso ele seja outro EJB eu gostaria de ver as anotações nele bem como o modo como foi declarado o EntityManager que você está usando.