Windows OS를 사용하는 경우, WAS나 별도 개발된 Java 데몬 프로그램 등을 서버 부팅 시 자동으로 실행되도록 구성해야 할 경우가 있다. 이 때, 프로그램 기동 스크립트를 윈도우 시작프로그램에 등록하면 손쉽게 가능하지만 이는 사용자가 서버에 로그인 해야 한다는 제약이 존재한다. 여기서는 OS 부팅 후 사용자 로그인 없이 자동으로 Java 프로그램을 기동하도록 하기 위해 Windows Service로 등록하는 과정에 대해 설명한다. 단, 여기서 설명하는 Java 프로그램은 일회성으로 기동하여 기능하고 스스로 종료하는 형태의 프로그램은 제외하며, 별도의 종료 명령이 있어야만 끝나는 데몬 형태의 프로그램만을 그 대상으로 한다.
Windows Service와 Java 프로그램
Unix/Linux 계열 OS에는 명령어를 백그라운드로 손쉽게 실행할 수 있지만, Windows OS에서는 프로그램을 백그라운드로 실행하기 위해 Windows Service 또는 작업 스케줄러와 같은 별도의 과정을 거쳐야 한다. 게다가 Windows Service는 Java 프로그램을 직접 실행할 수 없어 별도의 네이티브 바이너리를 거쳐야 하고, 작업 스케줄러는 등록 및 관리하는 과정이 까다로워 사용이 불편하다. 이를 위해 Apache Commons 프로젝트에서는 Java 프로그램을 쉽게 Windows Service로 등록하여 관리할 수 있는 Procrun이라는 프로그램을 제공한다.
Apache Commons Daemon Procrun
Procrun은 Java 프로그램을 네이티브 프로그램처럼 보이도록 감싸서 Windows Service로 관리할 수 있게 해준다. Procrun을 사용하여 Java 프로그램을 Windows Service로 등록하면 Java 프로그램 실행에 필요한 정보(classpath, main class, jvm option, command-line parameter, program parameter 등)들이 Windows Registry에 저장되므로 필요 시 레지스트리 편집기를 사용하여 쉽게 변경할 수 있다.
* Procrun 홈페이지: http://commons.apache.org/proper/commons-daemon/procrun.html
* Procrun 다운로드: http://www.apache.org/dist/commons/daemon/binaries/windows
Procrun 설치
Procrun 다운로드 사이트에서 commons-daemon-1.0.15-bin-windows.zip 파일을 다운로드하여 압축을 해제하면 다음과 같은 파일을 볼 수 있다.