Pessoal,
Tenho o seguinte método
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void processaFormatacao(String nomeArquivo) {
try {
log.info("Vai processar arquivo: " + nomeArquivo);
this.logaMensagens( Log.ALERTA , "Recebeu alerta para processar o arquivo: " + nomeArquivo );
File arquivo = this.verificaExistenciaArquivo(nomeArquivo);
this.executaChamadaFormatacao(arquivo);
/*outras diversas regras de negocio*/
} catch (Exception e3) {
StringBuffer bf = new StringBuffer();
bf.append("Exceção não tratada");
this.logaMensagens(Log.ERRO, bf.toString());
}
}
na linha this.logaMensagens( Log.ALERTA , "Recebeu alerta para processar o arquivo: " + nomeArquivo );
e inserido um registro no banco, porem este log eu preciso que ele possua uma transação separada fora do contexto do metodo processaFormatacao
O codigo do metodo que salva o log esta assim
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
private void logaMensagens( Integer tipoLog, String msg ){
Log log = new Log();
log.setTipo( Log.ALERTA );
log.setDescricao( msg );
em.persist(log);
}
Teoricamente ele devia iniciar uma transação para o metodo processaFormatacao e o logaMensagens
porem esta tudo no mesmo contexto (transação)
Alguem tem alguma ideia de onde estou errando?