Boa tarde!
Recentemente precisei desenvolver uma aplicação pra deixar rodando na máquina de alguns clientes, porém como software não é minha área encontrei algumas dificuldades e preciso de uma luz dos amigos especialistas
O software basicamente se conecta com o servidor a cada x segundos e salva as novas informações no DB caso haja, e fica nesse loop com um timer enquanto o software estiver em execução. Existe ainda um outro loop(também com timer a cada x segundos) que checa se o db tem novas informações para exibir na lista.
Já tive alguns problemas como SQL_BUSY, mas fiz algumas melhorias e o erro não aparece mais para mim.
A questão toda é, em 10 máquinas o software está perfeito, porém em 3 ele não funciona. Consigo fazer o login pelo software, ou seja, ele faz a requisição e salva no db, porém quando chega na parte dos loops ele simplesmente para de salvar as infos no db.
Então minha dúvida seria: ter esse loop checando o db toda hora pode ser prejudicial para algumas máquinas? Se sim, qual seria a boa prática para isso? O que pode acontecer de funcionar em algumas máquinas e em outras não sendo que é o mesmo sistema?
Um exemplo de um dos códigos do loop:
public void checkInfoDB() {
try {
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:data.db");
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery("SELECT * FROM info;");
while (rs.next()) {
// aqui é onde comparo com a lista
}
rs.close();
stat.close();
conn.close();
timer.schedule(new TimerTask() {
@Override
public void run() {
Platform.runLater(new Runnable() {
public void run() {
checkInfoDB();
}
});
}
}, 2500);
} catch (Exception e) {
System.out.println("Erro checkInfoDB(): " + e.getMessage());
}
}
Desculpe se a questão ficou muito longa, mas qualquer orientação será muito bem vinda.
Um abraço a todos!