1

我已经使用 procrun 将 Java 应用程序转换为 Windows 服务。当我使用 Windows 服务程序停止服务时,它会挂起并且没有响应。当使用调试模式启动它,然后当我使用 ctrl+c 终止它时,我看不到停止方法被调用。我已经给出了一个没有被打印的打印声明。下面是我的代码。请指教。Windows Even 日志中没有与此服务相关的任何内容。

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%

暂停

4

1 回答 1

1

我认为您应该使用关闭挂钩,以便在您按下ctrl+c关闭挂钩时被调用。
此链接可能会帮助您
ShutDownHook

于 2015-12-04T07:10:56.543 回答