Hallo!
Ich habe folgendes Problem. Bei einem Java Programm das auf eine SQL Datenbank zugreift, möchte ich sicherstellen, dass die Verbindung zu dieser beim Beenden des Programms auf jeden Fall korrekt geschlossen wird ("myConnection.close()").
Wenn das Programm vom Benutzer über das Programmfenster oder den entsprechenden Menüeintrag beendet wird, kann ich vor dem Aufruf von "System.exit(0) problemlos die Datenbankverbindung schließen. Allerdings funktioniert das natürlich nicht, wenn der Benutzer das Programm mittels "Apfel+Q" oder über das Dock beendet.
Jetzt habe ich zwar EventListener von Apple gefunden die QuitEvents vom MacOS Abfangen, nur würde ich das ganze gerne plattformunabhängig lösen. D.h. möglichst so, dass es auch dann funktioniert wenn der Benutzer unter Windows "alt+F4", oder unter Linux "ctrl+C" drückt.
Versucht habe ich es schon mit Überschreiben der finalize() Methode, aber irgendwie dürfte das beim Beenden über das System nicht so recht funktionieren (möglicherweise wird da einfach die JVM beendet, ohne das Programm vorher ordentlich zu beenden - ich weiß nicht??
kann mir hier jemand weiter helfen? bin leider noch lange kein Profi
tausend dank und servus
booster
Ich habe folgendes Problem. Bei einem Java Programm das auf eine SQL Datenbank zugreift, möchte ich sicherstellen, dass die Verbindung zu dieser beim Beenden des Programms auf jeden Fall korrekt geschlossen wird ("myConnection.close()").
Wenn das Programm vom Benutzer über das Programmfenster oder den entsprechenden Menüeintrag beendet wird, kann ich vor dem Aufruf von "System.exit(0) problemlos die Datenbankverbindung schließen. Allerdings funktioniert das natürlich nicht, wenn der Benutzer das Programm mittels "Apfel+Q" oder über das Dock beendet.
Jetzt habe ich zwar EventListener von Apple gefunden die QuitEvents vom MacOS Abfangen, nur würde ich das ganze gerne plattformunabhängig lösen. D.h. möglichst so, dass es auch dann funktioniert wenn der Benutzer unter Windows "alt+F4", oder unter Linux "ctrl+C" drückt.
Versucht habe ich es schon mit Überschreiben der finalize() Methode, aber irgendwie dürfte das beim Beenden über das System nicht so recht funktionieren (möglicherweise wird da einfach die JVM beendet, ohne das Programm vorher ordentlich zu beenden - ich weiß nicht??
kann mir hier jemand weiter helfen? bin leider noch lange kein Profi
tausend dank und servus
booster