Frage

Ich möchte eine Befehlszeilenschnittstelle für eine Java-Anwendung implementieren. Dies wäre nicht allzu schwierig sein, zu tun, außer ich das Kommandozeilen-Programm möchte den Zustand eines anderen Java-GUI-Programm zu beeinflussen. So zum Beispiel könnte ich geben:

java CliMain arg1 arg2

Und ein anderer läuft GUI-Instanz würde eine entsprechende Aktion durchführen.

Was ist der einfachste Weg, so etwas wie dies umzusetzen?

War es hilfreich?

Lösung

könnten Sie haben die GUI-Anwendung auf einem TCP-Port (auf der localhost Schnittstelle) hören und die CLI-Anwendung, es würde verbinden.

Eine Möglichkeit, dies zu tun, wäre REST über HTTP zu verwenden.

Andere Tipps

Ein anderer Weg ist durch JMX. Es gibt Ihnen eine Menge Sachen „kostenlos“ (im einfachen Fall, dass Sie nur eine Bohne implementieren und registrieren sie - sehr einfach)., Und ist besonders gut geeignet für diese Aufgabe

können Sie die GUI-Anwendung haben (wie ein Editor) hören auf

1) Zwischenablage Ereignis eines bestimmten Typs
   wenn das Ereignis von einer Art ist, die Sie interessiert sind, erhalten dann den Inhalt der Zwischenablage.
2) Server-Socket auf einem bestimmt Port
   hört auf einem Server-Socket. wenn das CLI-Programm gestartet wird, verbindet es mit dem Server-Socket an einem bekannten Port sendet Informationen und beendet wird.
3) Warteschlange
   Sie können aus dem CLI-Programm und DEQUE aus dem GUI-Programm enque.

Wenn Sie weiter untersuchen möchten, verwenden viele professionelle Editoren wie Emacs den gleichen Mechanismus. http://www.emacswiki.org/emacs/EmacsClient

könnte Ihre Anwendung gesteuert werden über RMI . Die Anwendung würde eine Steuerschnittstelle implementieren, registrieren Sie ihren Dienst auf localhost und die Anwendung Befehlszeile würde ein RMI-Proxy und rufen Sie die gewünschten Kontrollmethoden bekommen ...

Es scheint zunächst schwer, aber wenn man Sie schon ausprobiert werden schnell sehen, wie einfach das ist. Und es unterstützt auch die Verschlüsselung über SSL . So könnten Sie Ihren Datenaustausch sichern, wenn sicherheitsrelevante Daten online sind.

Der einfachste Weg für die GUI für Befehle auf einem TCP-Port zu hören sein würde. Die Befehlszeile würde Befehle senden, und die GUI würde sie interpretieren.

Vielleicht könnten Sie es mit Named Pipes auch tun, aber ich bin nicht sicher, wie Sie über die Implementierung, dass in Java gehen würden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top