문제

실행 가능한 JAR 파일이 있습니다. 그 병의 Windows 서비스를 만들 수 있습니까? 실제로, 나는 시작시 그것을 실행하고 싶지만 레지스트리의 JAR 파일을 시작 폴더에 배치하고 싶지 않습니다.

도움이 되었습니까?

해결책

이 기사는 다음과 같이 알아야 할 모든 것을 알려야합니다."Windows 서비스로 Java 응용 프로그램 실행"; "사용을 언급합니다.자바 서비스 래퍼"(커뮤니티 에디션이 있습니다 Yajsw)

다른 팁

지금까지 내가 찾은 가장 쉬운 솔루션은 징수하지 않는 서비스 관리자

사용법이 될 것입니다

nssm install <servicename> "C:\Program Files\Java\jre7\java.exe" "-jar <path-to-jar-file>"

nssm.exe를 사용하지만 AppDirectory를 설정하거나 필요한 라이브러리 또는 리소스에 액세스 할 수 없습니다. 기본적으로 NSSM은 현재 작업 디렉토리를 항아리가 아닌 응용 프로그램 인 Java.exe로 설정했습니다. 배치 스크립트를 만들려면 이렇게하십시오.

    pushd <path-to-jar>
    nssm.exe install "<service-name>" "<path-to-java.exe>" "-jar <name-of-jar>"
    nssm.exe set "<service-name>" AppDirectory "<path-to-jar>"

서비스 일시 정지 문제를 해결해야합니다.

나는 실험을 해왔다 아파치 커먼즈 데몬. Windows를 지원합니다.Procrun) 및 유닉스 (JSVC). Advanced Installer는 다음과 같습니다 Java 서비스 튜토리얼 다운로드 할 예제 프로젝트가 포함되어 있습니다. javaservice.jar를 Windows 서비스로 실행하면 "Telnet 4444"를 사용하여 테스트 할 수 있습니다. 나는 Java를 쓰지 않고 Java Windows 서비스를 실행하는 데 중점을 두었 기 때문에 그들의 예를 사용했습니다.

Tanuki는 얼마 전에 JSW의 라이센스를 변경했습니다. 프로젝트를 시작하려면 또 다른 Java 서비스 래퍼를 사용할 것입니다. http://yajsw.sourceforge.net/ 이는 JW를 모방 한 다음이를 구축하고 더욱 향상시키는 오픈 소스 구현입니다.

편집 : 나는 몇 년 동안 몇 년 동안 여러 플라톤 (Windows, 몇몇 리눅스 ...)에서 YAJSW를 사용해 왔으며 훌륭합니다. 개발이 진행 중입니다.

Procrun을 사용하면 prunsrv를 응용 프로그램 디렉토리에 복사해야합니다 (다운로드), install을 만듭니다.

set PR_PATH=%CD%
SET PR_SERVICE_NAME=MyService
SET PR_JAR=MyService.jar
SET START_CLASS=org.my.Main
SET START_METHOD=main
SET STOP_CLASS=java.lang.System
SET STOP_METHOD=exit
rem ; separated values
SET STOP_PARAMS=0
rem ; separated values
SET JVM_OPTIONS=-Dapp.home=%PR_PATH%
prunsrv.exe //IS//%PR_SERVICE_NAME% --Install="%PR_PATH%\prunsrv.exe" --Jvm=auto --Startup=auto --StartMode=jvm --StartClass=%START_CLASS% --StartMethod=%START_METHOD% --StopMode=jvm --StopClass=%STOP_CLASS% --StopMethod=%STOP_METHOD% ++StopParams=%STOP_PARAMS% --Classpath="%PR_PATH%\%PR_JAR%" --DisplayName="%PR_SERVICE_NAME%" ++JvmOptions=%JVM_OPTIONS%

나는 추정한다

  • Jar와 Prunsrv.exe가있는 동일한 디렉토리에서 이것을 실행하십시오.
  • 항아리는 작동하는 것으로 나타납니다 .mf
  • 그리고 당신은 JVM에 셧다운 후크가 등록되어 있습니다 (예 : 컨텍스트 .registershutdownhook ()와 같은 봄) ...
  • JAR 외부의 파일에 상대 경로를 사용하지 않음 (예 : log4J를 사용해야합니다. log4j.appender.x.file = $ {app.home} /logs/my.log 또는 똑같은 것)

Procrun을 확인하십시오 수동 그리고 이 튜토리얼 자세한 내용은.

우리는 사용합니다 타누키 서비스 포장지 그에 대한. 매우 구성 가능합니다.

또 다른 옵션은 Winsw입니다. https://github.com/kohsuke/winsw/

XML 파일을 구성하여 서비스 이름, 실행 대상, 인수 등을 지정하고 EXE를 사용하여 설치하십시오. 예제 XML : https://github.com/kohsuke/winsw/tree/master/examples

나는 이것을 NSSM보다 선호합니다. 왜냐하면 그것은 하나의 경량 exe이기 때문입니다. 구성 XML은 소스 코드를 쉽게 공유/커밋 할 수 있습니다.

추신 : 서비스는 실행하여 설치됩니다 your-service.exe install

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top