Java Anwendung in Konsole zur Laufzeit stoppen?

forced

Mitglied
Guten Morgen

ich habe folgendes Problem - Ich habe eine Java Anwendung (*.jar) für meinen Server geschrieben, welche in einer Endlosschleife agiert. Diese Endlosschleife pausiert zwischendurch für ein paar Min. um anschließend weiterzuarbeiten.

Nun habe ich es eben auf meinen Server geladen und per java -jar name.jar gestartet, funktioniert auch alles sehr schön, nur leider kann ich die Anw. nicht mehr stoppen?

Generell soll die Anwendung ja demnächst ohne Ende arbeiten, doch trotzdem muss sie ja irgendwann wieder gestoppt werden?

Habe nun eben mein SSH Programm einfach geschloßen, somit wurde die ausführung gestoppt. Aber das muss sauberer gehen?

Vielen Dank
 
Was hast du denn für einen Server? Linux, Windows?

Bei einem Linux-Server würde ich das mit der Endlosschleife lassen und das Programm eher alle x Minuten als Cron-Job laufen lassen. Alternativ richte es als Dienst ein oder in Windows als Service.
 
Was hast du denn für einen Server? Linux, Windows?

Bei einem Linux-Server würde ich das mit der Endlosschleife lassen und das Programm eher alle x Minuten als Cron-Job laufen lassen. Alternativ richte es als Dienst ein oder in Windows als Service.


Linux System..

Darf nicht als Cron laufen, da sich die Zeitabstände wo das Programm pausiert von Durchlauf zu Durchlauf ändert, also keine feste Aktivierung :-(
 
kill -9 [prozessnummer] ;-)

Nein aber im ernst. Mit kill -SIGTERM [prozessnummer] kannst du das ganze in der VM bzwl in deinem Javaprogramm mit einem sog. Shutdown Hook abfangen und kontrolliert runterfahren.

Gruß

Ben
 
Wieso baust du nicht in deine Java Anwendung einen KeyListener ein, der auf einen bestimmten Tatendruck/kombination die Anwendung stoppt?
 
Matze hat gesagt.:
Wieso baust du nicht in deine Java Anwendung einen KeyListener ein, der auf einen bestimmten Tatendruck/kombination die Anwendung stoppt?

Er kann keinen KeyListener einbauen, weil ein KeyListener nur bei Swing-Anwendungen reagiert.

MFG

zEriX
 
Dann frage ich mich aber wie das funktionieren soll. Es kann nur was auf Event reagieren, wenn eine Komponente den Focus hat und bei einer Konsolen-Anwendung hat keine Java-Komponente den Focus. Auch der Konstruktor des KeyEvents muss eine Component übergeben bekommen. Die gibts es auch nur bei grafischer Programmierung.

Also ist es nicht möglich. Soweit alle Listener die von EventListener erben sind AWT/Swing-Listener.

MFG

zEriX
 
Zuletzt bearbeitet:
Tut mir leid, ich hab mich vieleicht nicht deutlich ausgedrückt. Zumindest ist es möglich dafür einen eigenen Listener zuschreiben.

Dazu benötigt man doch eigentlich nur in eine "fire" Methode und einen selbst geschriebenen Listener.
 
Eine Idee von mir wäre mal, dass man noch einen zusätzlichen Thread hat, der auf Eingaben in der Konsole wartet. Also einen Thread in dem das "normale" Programm abläuft und ein Thread der auf der Konsole lauscht.
So könnte man das Programm auch über Parameter steuern.

Also versucht hab ich das noch nicht, aber es müsste eigentlich funktionieren.


MFG

zEriX
 
Zurück