2015-12-04 1 views
1

Я превратил приложение Java в службу Windows, используя прокрутку. Когда я останавливаю службу с помощью программы Windows Services, она зависает и не отвечает. Когда вы запускаете его, используя режим отладки, а затем, когда я завершаю его с помощью ctrl + c, я не вижу, как вызывается метод остановки. Я дал заявление печати, которое не печатается. Ниже мой код. Пожалуйста посоветуй. В журналах Windows Even в этой службе нет ничего.Стоп-метод не вызывается при завершении службы Windows

public static void main(String[] args) { 
    if ("start".equals(args[0])) { 
     start(args); 
    } else if ("stop".equals(args[0])) { 
     stop(args); 
    } 

} 

public static void start(String[] args) { 

    KubeSdkMain sdkMain = new KubeSdkMain(); 
    sdkMain.startSDK(); 

} 

public static void stop(String[] args) { 

    System.out.println("stop"); 
    stop = true; 

} 

Ниже приведено содержимое файла bat, который я запускаю для установки службы.

cd "G:\Projects" 
set PR_PATH="G:\Projects" 
SET PR_SERVICE_NAME=TestService 
SET PR_JAR=KKSDK.jar 
SET START_CLASS=com.example.test 
SET START_METHOD=start 
SET STOP_CLASS=com.example.test 
SET STOP_METHOD=stop 
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% 

пауза

+0

Как вы инициировать остановку –

+0

инициировать в смысле? – mayooran

+0

У вас есть набор потоков с 'Runtime.addShutdownHook()' для вызова stop во время отладки? Стоп явно установлен для вызова в вашем вызове prunsrv, поэтому вам нужно явно называть его во время отладки. –

ответ

0

Я думаю, вы должны использовать выключения крючок так, что при нажатии ctrl+c выключения крюк вызывается.
Эта ссылка может помочь вам
ShutDownHook

Смежные вопросы