Galera,
Crio uma conexão da seguinte maneira:
public static Connection getConnection(final String token) throws ConexaoInvalidaException {
StringBuilder url;
Conexao conexao;
Connection connection;
conexao = ConexaoUtil.conexaoServiceInner.getConexaoPorToken(token);
url = new StringBuilder("jdbc:jtds:sqlserver://@+ip:@+porta/@+baseDados");
url.replace(url.indexOf("@+ip"), url.indexOf("@+ip")+"@+ip".length(), conexao.getIp());
url.replace(url.indexOf("@+porta"), url.indexOf("@+porta")+"@+porta".length(), conexao.getPorta().toString());
url.replace(url.indexOf("@+baseDados"), url.indexOf("@+baseDados")+"@+baseDados".length(), conexao.getBaseDados());
try {
Class.forName("net.sourceforge.jtds.jdbc.Driver");
connection = DriverManager.getConnection(url.toString(), conexao.getUsuario(), conexao.getSenha());
return connection;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
E uso esse Connection nesta outra classe:
@Service
public class LancamentoServiceImpl extends ConexaoUtil implements LancamentoService {
@Autowired
private LancamentoRepository lancamentoRepository;
@Override
@Transactional(propagation=Propagation.REQUIRED, readOnly=false, rollbackFor= {ConexaoInvalidaException.class, DadosInvalidosException.class, Exception.class})
public LancamentoOut geraLancamentos(LancamentoIn lancamento) throws ConexaoInvalidaException, DadosInvalidosException, Exception {
Long idLancamentoAlfa, idLancamentoSecundario, idParcela;
Long[] lancamentos;
Connection connection;
connection = null;
try {
this.validar(lancamento);
connection = getConnection(lancamento.getToken());
lancamentos = this.lancamentoRepository.gerarLancamento(lancamento, connection);
idLancamentoAlfa = lancamentos[0];
idLancamentoSecundario = lancamentos[1];
for(ParcelaLancamento parcela : lancamento.getParcelas()) {
idParcela = this.lancamentoRepository.gerarParcela(parcela, idLancamentoAlfa, connection);
this.lancamentoRepository.gerarLancamentoGuia(lancamento, parcela, idParcela, connection);
for(ReceitaParcela receita : parcela.getReceitas()) {
this.lancamentoRepository.gerarReceita(receita, idParcela, idLancamentoSecundario, lancamento.getTipoLancamento(), connection);
}
}
return new LancamentoOut(idLancamentoAlfa);
} catch (ConexaoInvalidaException e) {
throw e;
} catch (DadosInvalidosException e) {
throw e;
} catch (Exception e) {
throw e;
} finally {
closeConnection(connection);
}
}
}
Está ocorrendo um erro no método gerarLancamentoGuia(), e o mesmo lança um Exception, mas o Rollback não é executado.
Alguma dica de onde posso estar errando?