2017-09-07 3 views
0

Ich habe eine Java-Anwendung (funktioniert als Server für eine Client-Anwendung) mit einer GUI. Diese Anwendung muss immer auch nach Neustarts des Servers ausgeführt werden.Ausführen von Java-Anwendung als Windows-Dienst

Ich habe einen Windows-Dienst mit Apache Daemon für diesen Zweck erstellt.

Wenn der Server startet, kann ich sehen, dass meine Dienste als Systemdienst ausgeführt werden. Aber wenn ich die GUI der Anwendung öffne, startet eine andere Instanz.

Ich brauche die GUI an die gleiche Instanz, die nach dem Neustart gestartet wurde, ist dies möglich.

+0

Wie öffne ich die GUI? durch Klicken auf das Symbol? – Stultuske

+1

AFAIK-Dienste können keine GUIs haben - Sie müssen die GUI an den laufenden Dienst anhängen (über Sockets zum Beispiel) – MadProgrammer

+0

Ja Ich versuche die GUI zu öffnen, indem ich auf das Symbol klicke –

Antwort

1

Ein Windows-Dienst (sowie Daemons auf Unix-Systemen) kann nicht mit einer GUI laufen, weil es ohne ein Windows-Management-System wie Windows Desktop oder KDE, Gnome usw. startet. Ich bin wirklich überrascht, dass Ihre Anwendung startet als Dienst, da Versuche, GUI-Elemente zu starten, zu einem Fehler führen sollten.

Sie müssen die GUI von den Serverkomponenten trennen. Die GUI muss dann durch ein Protokoll mit dem Server kommunizieren. Da Sie Ihre Anwendung bereits abgeschlossen haben, empfehle ich RMI als Protokoll der Wahl, das sollte am einfachsten zu implementieren sein, da Sie im Grunde nur einige Schnittstellen zu Ihren Klassen hinzufügen müssen, um RMI auf den Weg zu bringen, anstatt eine komplette Komplexitätsschicht hinzuzufügen eigene (ein zusätzlicher Server, um Befehle vom Client zu empfangen, etc.).

RMI kann so eingerichtet werden, dass es nur auf Verbindungen von localhost wartet, also sollten Sie in Bezug auf Sicherheit auch gut sein.

+0

Unter Windows können Dienste GUI-Elemente erstellen ; Sie können nur nicht mit dem Benutzer interagieren. Windows erstellt bei Bedarf Dummy-Anzeigeoberflächen. –

+0

Also in diesem Fall ist es möglich, die GUI selbst beim Neustart zu starten, ich verstehe, dass durch Start möglich ist, aber das eine Benutzeranmeldung benötigt, um zu aktivieren. –

Verwandte Themen