gpt4 book ai didi

java - 终止 Windows 服务时未调用 Stop 方法

转载 作者:行者123 更新时间:2023-11-30 07:44:46 25 4
gpt4 key购买 nike

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

暂停

最佳答案

我认为你应该使用关闭钩子(Hook),这样当你按ctrl+c时关闭钩子(Hook)就会被调用。
此链接可能对您有帮助
ShutDownHook

关于java - 终止 Windows 服务时未调用 Stop 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34082745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com