Czy ktoś potrafiłby pomóc w następującym zagadnieniu?
Piszę program w JavieFx który się łaczy z bazą. Baza wywoływana jest asynchronicznie korzystając przy tym z service. Problemem jest założenie że w przypadku nie połączenia się z bazą danych muszę ponawiać połączenie przez określoną ilosć razy.
Próbowałem zrobić to za pomocą setOnFailed ale mimo ze zostaje wyrzucony wyjatek w którym jest this.failed. to program nigdy nie wchodzi do tej metody.
(Usunąłem niepotrzebną cześć implementacji aby kod był bardziej przejrzysty)
public class FlightControllerTask extends Service<LinkedList<Users>> {
protected Task<LinkedList<Users>> createTask() {
return new Task<LinkedList<Userst>>() {
Connection c;
protected LinkedList<Users> call() throws Exception {
try {
c = DBConnector.connect();
//łaczenie z bazą i wyciąganie danych za pomocą zapytań
} catch (Exception e) {
this.failed();
}
return flightList;
}
};
}
service.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
@SuppressWarnings("unchecked")
@Override
public void handle(WorkerStateEvent t) {
//kod w przypadku pozytywnego połaczenia sie z baza danych
}
});
service.setOnFailed(new EventHandler<WorkerStateEvent>() { //kod w przypadku negatywnego połaczenia z baza danych.
@Override
public void handle(WorkerStateEvent t) {
try{
Thread.sleep(1000);
service.restart();
System.out.println("Nie można uruchomić bazy danych");
}
catch(InterruptedException e){
e.getMessage();
}
}
});
service.start();
}