2017-09-07 1 views
0

GUI가있는 Java 응용 프로그램 (클라이언트 응용 프로그램의 서버로 작동)이 있습니다. 이 응용 프로그램은 서버를 다시 시작한 후에도 항상 실행해야합니다.Java 응용 프로그램을 Windows 서비스로 실행

이 목적으로 아파치 데몬을 사용하여 Windows 서비스를 만들었습니다.

서버가 시작되면 서비스가 시스템 서비스로 실행되고있는 것을 볼 수 있습니다. 그러나 응용 프로그램의 GUI를 열면 다른 인스턴스가 시작됩니다.

GUI를 다시 시작한 후에 시작한 동일한 인스턴스에 연결해야합니다. 가능합니다.

+0

어떻게 GUI를 열 수 있습니까? 아이콘을 클릭하여? – Stultuske

+1

AFAIK 서비스는 GUI를 가질 수 없습니다 - 예를 들어 소켓을 통해 실행중인 서비스에 연결하기 위해 GUI가 필요합니다 – MadProgrammer

+0

예 아이콘을 클릭하여 GUI를 열려고 시도합니다 –

답변

1

윈도우 서비스 (유닉스 시스템의 데몬)는 윈도우 데스크탑이나 KDE, 그놈 (Gnome) 등과 같은 윈도우 관리 시스템없이 시작되기 때문에 GUI로 실행할 수 없습니다. GUI 요소를 시작하려고하면 오류가 발생하므로 서비스로 시작합니다.

GUI를 서버 구성 요소와 분리해야합니다. 그런 다음 GUI는 일부 프로토콜로 서버와 통신해야합니다. 이미 응용 프로그램을 완료했기 때문에 RMI를 선택 프로토콜로 제안합니다. 구현하기 가장 쉬운 방법입니다. 왜냐하면 본질적으로 복잡한 인터페이스를 추가하는 대신 RMI를 가져 오기 위해 클래스에 인터페이스를 추가해야하기 때문입니다. own (클라이언트에서 명령을 수신하기위한 추가 서버 등).

RMI는 로컬 호스트의 연결 만 수신하도록 설정할 수 있으므로 보안 측면에서 좋을 것입니다.

+0

Windows에서 서비스는 GUI 요소를 생성 할 수 있습니다 ; 그들은 단지 사용자와 상호 작용할 수 없습니다. Windows는 필요에 따라 더미 표시면을 만듭니다. –

+0

그래서이 경우 재시작시 GUI 자체를 시작하는 것이 가능합니다. 시작을 통해 가능하다는 것을 알고 있지만 활성화하려면 사용자 로그인이 필요합니다. –

관련 문제