我已经使用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%
暂停