Ich habe Schwierigkeiten zu bestimmen, wenn meine Verbindung unterbrochen wird, was zufällig für mich passiert. Ich habe versucht, einen Timer einzustellen, um anzuzeigen, wenn die Verbindung einfror (für meinen Fall sollte jede Aufgabe, die die Verbindung verwendet, nicht mehr als ein paar Sekunden dauern), aber das scheint nicht zu funktionieren.Java: Wie starte ich eine Datenbankverbindung neu, wenn sie eingefroren oder getrennt wurde?
Ich sollte auch für die Verbindung beachten, mehrere Threads laufen zur gleichen Zeit eine Art von Aufgabe, wenn ein Thread noch am Leben ist oder nicht unterbrochen und es war nach der zugewiesenen Zeit, um die Aufgabe abzuschließen, dann, Für mich deutet das auf ein Verbindungsproblem hin. Hier
ist der Kern dessen, was ich getan habe:
public void run(){
super.run();
try {
Timer timer = new Timer(true);
TimerTask task = new TimerTask(){
@Override
public void run() {
if(isAlive() || interrupted()){//there is a problem with the connection, but I never enter this case...
interrupt();
timer.cancel();
//end the connection and restart it all over again
try {
conn.close();
restartConnection();
} catch (SQLException e) {
e.printStackTrace();
}
}
else{//there is no problem with the connection
}
}
};
timer.schedule(task, 5000);//each task should not take anywhere near 5 secs, if it does, then I THINK there is a connection problem
timer.cancel();
}
} catch (IOException e) {
e.printStackTrace();
}
}