Boa tarde, preciso de ajuda. Estou inserindo no banco alguns registros que estão em um list mas estou tendo problemas com o fluxo de conexão, consigo inserir somente uma parte pois a conexão para de responder na metade do processo :? já tentei chamar a conexão de fora do método com outro nome e etc... mas até agora não estou obtendo resultados positivos.
Esta é minha classe que estou populando os objetos.
public class LerXml implements Runnable {
@Override
public void run() {
try {
XStream xstream = new XStream(new Dom4JDriver());
xstream.processAnnotations(MensagemSIB.class);
BufferedReader input = new BufferedReader(new FileReader("c:\\fileTeste.xml"));
MensagemSIB bl = (MensagemSIB) xstream.fromXML(input);
List<Beneficiario> registros = bl.getMensagem().getAnsParaOperadora().getConferencia().getBeneficiarios();
Operacoes con = new Operacoes();
int tamanho = registros.size();
for (int i = 0; i < tamanho; i++) {
Endereco e = new Endereco();
e.setBairro(registros.get(i).getEndereco().getBairro());
e.setCep(registros.get(i).getEndereco().getCep());
e.setCodigoMunicipio(registros.get(i).getEndereco().getCodigoMunicipio());
e.setCodigoMunicipioResidencia(registros.get(i).getEndereco().getCodigoMunicipioResidencia());
e.setComplemento(registros.get(i).getEndereco().getComplemento());
e.setLogradouro(registros.get(i).getEndereco().getLogradouro());
e.setNumero(registros.get(i).getEndereco().getNumero());
e.setResideExterior(registros.get(i).getEndereco().getResideExterior());
e.setTipoEndereco(registros.get(i).getEndereco().getTipoEndereco());
Identificacao id = new Identificacao();
id.setCpf(registros.get(i).getIdentificacao().getCpf());
id.setDataNascimento(registros.get(i).getIdentificacao().getDataNascimento());
id.setNome(registros.get(i).getIdentificacao().getNome());
id.setNomeMae(registros.get(i).getIdentificacao().getNomeMae());
id.setSexo(registros.get(i).getIdentificacao().getSexo());
Vinculo v = new Vinculo();
v.setCcoBeneficiarioTitular(registros.get(i).getVinculo().getCcoBeneficiarioTitular());
v.setCnpjEmpresaContratante(registros.get(i).getVinculo().getCnpjEmpresaContratante());
v.setCoberturaParcialTemporaria(registros.get(i).getVinculo().getCoberturaParcialTemporaria());
v.setCodigoBeneficiario(registros.get(i).getVinculo().getCodigoBeneficiario());
v.setDataCancelamento(registros.get(i).getVinculo().getDataCancelamento());
v.setDataContratacao(registros.get(i).getVinculo().getDataContratacao());
v.setDataReativacao(registros.get(i).getVinculo().getDataReativacao());
v.setItensExcluidosCobertura(registros.get(i).getVinculo().getItensExcluidosCobertura());
v.setMotivoCancelamento(registros.get(i).getVinculo().getMotivoCancelamento());
v.setNumeroPlanoANS(registros.get(i).getVinculo().getNumeroPlanoANS());
v.setNumeroPlanoOperadora(registros.get(i).getVinculo().getNumeroPlanoOperadora());
v.setRelacaoDependencia(registros.get(i).getVinculo().getRelacaoDependencia());
con.insereBeneficiario(e, id, v);
}
input.close();
} catch (IOException e) {
}
}
}
este é meu método de inserir
public void insereBeneficiario(Endereco e,
Identificacao id, Vinculo v) {
Connection con = ConectaBanco.criaConexao();
PreparedStatement ps = null;
String sql = "INSERT INTO beneficiario VALUES ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,? )";
try {
ps = con.prepareStatement(sql);
ps.setString(1, id.getNome());
ps.setString(2, id.getSexo());
ps.setString(3, id.getCpf());
ps.setString(4, id.getNomeMae());
ps.setString(5, id.getDataNascimento());
ps.setString(6, e.getLogradouro());
ps.setString(7, e.getNumero());
ps.setString(8, e.getBairro());
ps.setString(9, e.getCodigoMunicipio());
ps.setString(10, e.getCep());
ps.setString(11, e.getTipoEndereco());
ps.setString(12, e.getResideExterior());
ps.setString(13, e.getComplemento());
ps.setString(14, e.getCodigoMunicipioResidencia());
ps.setString(15, v.getRelacaoDependencia());
ps.setString(16, v.getCcoBeneficiarioTitular());
ps.setString(17, v.getDataContratacao());
ps.setString(18, v.getNumeroPlanoANS());
ps.setString(19, v.getCoberturaParcialTemporaria());
ps.setString(20, v.getItensExcluidosCobertura());
ps.setString(21, v.getCnpjEmpresaContratante());
ps.setString(22, v.getDataCancelamento());
ps.setString(23, v.getMotivoCancelamento());
ps.setString(24, v.getDataReativacao());
ps.setString(25, v.getNumeroPlanoOperadora());
ps.executeUpdate();
} catch (SQLException ex) {
} finally {
fechaStatement(ps);
fechaConexao(con);
}
}
e esta é minha saída de execução do programa
Banco conectado com sucesso!
Não foi possível conectar no banco
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:458)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:546)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:236)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at br.com.businessflex.controller.ConectaBanco.criaConexao(ConectaBanco.java:23)
at br.com.businessflex.controller.Operacoes.insereBeneficiario(Operacoes.java:24)
at br.com.businessflex.model.LerXml.run(LerXml.java:58)
at br.com.businessflex.model.Principal.main(Principal.java:11)
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12519, TNS:no appropriate service handler found
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:395)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1102)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:320)
... 10 more
Exception in thread "main" java.lang.NullPointerException
at br.com.businessflex.controller.Operacoes.insereBeneficiario(Operacoes.java:29)
at br.com.businessflex.model.LerXml.run(LerXml.java:58)
at br.com.businessflex.model.Principal.main(Principal.java:11)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 17 minutos 9 segundos)
Gostaria de saber se tem uma forma de manter a conexão estável até o fim, desde já obrigado.