终止Windows服务时不停止调用停止方法

时间:2015-12-04 07:07:19

标签: java apache windows-services java-8 procrun

我已经使用procrun将java应用程序转换为Windows服务。当我使用Windows服务程序停止服务时,它会挂起并且没有响应。当使用调试模式启动它时,然后当我使用ctrl + c终止它时,我看不到被调用的stop方法。我给出了一份没有印刷的印刷声明。以下是我的代码。请指教。 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%

暂停

1 个答案:

答案 0 :(得分:0)

我认为你应该使用一个关闭钩子,这样当你按下ctrl+c时,会调用shutdown hook。
这个链接可以帮助你ShutDownHook