티스토리 뷰
javaservice.exe 란 33kb 짜리 파일 하나로 간단하게 윈도우 서비스에 등록 / 삭제가 가능하다.
binary 패키지를 받아서 압축을 풀어보면 다양한 예제 파일이 같이 공존하니 충분히 참고가 될것이다.
URL : http://forge.objectweb.org/projects/javaservice/
참고로 본인은 이런식으로 등록했다.
testinstall.bat
set JAVA_HOME=c:\jdk
set JAVASERVICE=JavaService.exe
%JAVASERVICE% -install ${Service에 등록될 이름} %JAVA_HOME%/jre/bin/server/jvm.dll -Djava.class.path=%CLASSPATH% com.dasida.TestMain -params INSTALL_DIR=c:\test -out c:\out.log -err c:\err.log
pause
testuninstall.bat
set JAVASERVICE=JavaService.exe
%JAVASERVICE% -uninstall ${Service에 등록된 이름}
Service 의 시작 과 중지도 간단하다.
시작 > net start test
중지 > net stop test
1. 우선 아래 파일을 다운로드 받으세요.
instsrv.exe,srvany.exe 두개의 파일이 들어있습니다.
파일에 대한 설명은 techbug님의 블로그에서 발췌했습니다.
● instsrv.exe
- exe 파일을 서비스로 등록시켜주는 프로그램
- 등록시 : instsrv [서비스명] [등록할exe파일]
- 삭제시 : instsrv [서비스명] remove
- 더 자세한 내용은 usage 참조
● srvany.exe
- Windows .NET 서비스 리소스킷
2. 압축을 푸시고 등록하고자 하는 프로그램과 같이 아무 디렉토리에나 넣어두세요.
제 경우에는 C:\TroubleAlarmService 디렉토리에 instsrv.exe, srvany.exe,
개발한 서버 프로그램을 같이 위치 시켰습니다.
3. 시작 → 실행 → cmd : 프로그램이 들어있는 디렉토리로 이동하여 아래 명령 실행
C:\TroubleAlarmService> instsrv.exe TroubleAlarmService C:\TroubleAlarmService\srvany.exe
TroubleAlarmService는 구동될 서비스 명이 됩니다. 각자 원하는 서비스 명을 입력하시면 됩니다.
4. 시작 → 실행 → regedit : 레지스트리 편집기 실행
HKEY_LOCAL_MACHENE\SYSTEM\CurrentControlSet\Services 를 보면 등록하신 서비스 명으로
폴더가 생성되어 있을겁니다. 제 경우에는 TroubleAlarmService가 되겠죠.. 폴더를 선택하고,
마우스 오른쪽 '새로만들기 -> 키'를 선택합니다. 그러면 밑에 폴더가 하나 생성되는데요.
폴더명을 Parameters로 해주세요.
5. Parameters 폴더를 선택하고 레지스트리 편집기 오른쪽 영역에서 마우스 오른쪽 버튼을 눌러서
'새로 만들기 → 문자열값'을 선택하고 아래 처럼 입력합니다.
이름 : Application
값 : java -classpath c:\TroubleAlarmService TroubleAlarmService
저장한 후 편집기를 닫습니다.
6. 서비스를 구동 시키는 일만 남았습니다. 두가지 방법이 존재합니다.
시작 → 제어판 → 관리도구 → 서비스 : TroubleAlarmService 찾아서 시작
시작 → 실행 → cmd
C:\> net start TroubleAlarmService
C:\> net stop TroubleAlarmService
이렇게 하고 서비스가 동작하는 것을 확인했습니다.
일반적으로 Windows 에서의 Java Application은 Command Console을 사용하여 구동된다.
이 방식은 아래와 같은 단점을 가지고 있다.
1. 사용자 실수로 인해 Command Console에 Mouse Click이 발생하면 Application이 Hold됨.
2. 사용자가 Logout하면 해당 Application이 종료됨.
3. 특별히 제약이 없는 경우 터미널 서버나 원격 데스크탑 Application을 사용하여 같은 Application을
각 User별로 계속 구동할 수 있음.
이런 단점을 극복하기 위해 Unix에서는 Background Process로 구동시키면 되지만,
Windows는 그 태생이 End User를 위한 DeskTop이기에 그 개념이 없다.
그와 유사한 개념이 Windows Service이다.
그러나 애석하게도 현재 JDK는 Windows Service를 사용하는 API를 제공하고 있지는 않다.
그로 인해 Apache나 InstallAnywhere등의 Application 벤더들은 그들만의 방법으로 Service등록을
가능하게 해서 사용하고 있는 실정이다.
지금 제시할 방법은 이러한 Java Application을 Windows Service로 등록하는 간단한 방법이다.
프로젝트에 적용중인 모듈에 적용하기 위해 여러 자료를 찾다 발견한 매우 간단한 방법이다.
지금까지 제가 배포한 모듈의 경우 모두 이 방법을 사용해 서비스에 등록했다.
방법은 다음과 같다.
JavaService.exe 에 구동 Argument로 설정값을 넘겨주면 서비스 등록이 완료되게 된다.
실제 사용은 아래의 방법을 따른다.
1. JavaService.exe를 구한다.
2. 서비스 등록용 batch파일을 만든다. 아래는 필자가 사용하는 파일의 예이다.
C:JavaService -install MyApp %JAVA_HOME%jre inserverjvm.dll -Djava.class.path=.;C:MyAppclasses -start MyApp.StartApp -params INSTALL_DIR=C:MyAppr -out C:MyApplogsstdout.log -err C:MyApplogsstderr.log -auto
Java Service가 사용하는 각 옵션 값은 다음과 같습니다.
-install COM : 윈도우 서비스에 COM 란 이름으로 등록
%JVM_PATH% : Java 서비스 등록을 위해 사용하는 dll. JDK나 JRE가 설치된 곳에 있음.
-description : 서비스에 등록될때 해당 서비스의 설명 내용
3. 서비스 해지용 batch파일을 만든다. 아래는 필자가 사용하는 파일의 예이다.
C:JavaService -uninstall MyApp
더 자새한 내용은 http://forge.ow2.org/projects/javaservice/ 을 참고하기 바란다.
'Computer > JAVA' 카테고리의 다른 글
[Java] JDK 설치 및 환경변수 설정 (0) | 2017.12.11 |
---|---|
[Swing] Hyperlink Connect by clicking Jlabel (0) | 2017.04.10 |
[Eclipse] WindowBuilder Java GUI(AWT,SWT,Swing) Tool (0) | 2017.03.11 |
JavaService 자바프로그램 부팅시 자동실행 (0) | 2017.02.28 |
[JAVA] ArrayList - Java API (0) | 2017.02.27 |