Ich habe eine Java EE-Anwendung auf Glassfish 3.1.2 in einer geclusterten Umgebung ausgeführt.Wie jede Nacht Methode auf JEE-Cluster ausgeführt wird
Ich möchte eine bestimmte Methode einmal am Tag ausführen (d. H. Einige Einträge aus der Datenbank löschen).
habe ich einen Timer:
@Singleton
public class TimerService {
@Schedule(second = "0", minute = "0", hour = "0", persistent=false)
public void runEveryDay() {
LOG.info("### runEveryDay");
}
Wenn ich die Protokolle prüfen, wird das Verfahren auf beiden Clusterknoten ausgeführt. Ich befürchte, dass es bei der gleichzeitigen Ausführung der Methode auf beiden Knoten zu Problemen aufgrund veralteter Daten kommen kann.
Gibt es eine Möglichkeit, dass die Methode nur auf einem Knoten ausgeführt wird? Oder kann ich die Methoden irgendwie synchronisieren?
Ich hatte dieses Problem auch. Eine bessere Lösung wäre es, den nächtlichen Batch getrennt vom Java EE-Container zu planen, der vom Betriebssystem geplant wird. – duffymo