2010-12-09 11 views
0

Ich mag es, eine kleine Server-Anwendung zu schreiben, die von einer kleinen Konsole App gesteuert wird (Start, Pause, Stop, etc). Für den Server sollte die Feder verwendet werden (ein Teil davon existiert bereits). Also, was ich tun ist, um den Server zu starten etwas wie folgt aus:Starten und erneut verbinden mit einem Spring Bean von Konsole

  1. einen Server-Thread starten und beenden Hauptmethode

und dann im Thread:

  1. Last Anwendungskontext aus xml
  2. starten einige worker threads verbinden mit bohnen tun, was macht

Jetzt möchte ich den Server durch einen anderen Befehl gestoppt werden. Wie kann ich mich mit dem bereits laufenden Kontext verbinden und diesen herunterfahren?

Danke für Ihre Hilfe, Alexander

+0

http://www.kodejava.org/examples/216. html einfach hinzufügen Federteil in es –

Antwort

1

Die klassische Art, laufenden Java-Code zu verwalten, ist JMX.
Spring lässt Sie export beans as MBeans.

Und für JMX über die Kommandozeile zugreifen, sehen Sie sich die Antworten auf diese letzte Frage:

Calling JMX MBean method from a shell script

+1

Ich versuchte es mit MBeans und habe es funktioniert. Ich habe auch den Server-Code selbst in eine Bean-Struktur umgewandelt, die die close-Methode in ihrem eigenen Kontext aufruft, wenn ihre close-Methode aufgerufen wird. Funktioniert für jetzt. Danke für deine Antwort! – avh

0

Sie könnten eine pid-Datei erstellen, wenn der Server gestartet wird, sollte es die pid in eine Datei, server.pid loggt sein. Wenn Sie einen Stopp machen, können Sie den Prozess lesen und ihn beenden. Oder noch einfacher, haben Sie einen immer laufenden Thread in Ihrer Hauptklasse, die nach einer Datei in einem Ordner sucht. Sobald die Datei verfügbar ist oder geändert wird, wird der Server gestoppt.

Verwandte Themen