有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Windows服务进程被终止而不是停止

我用C编写了一个程序,它在线程中启动一个JavaVM,并在主循环中检查另一个服务的新版本。此程序在Windows上作为服务运行。这意味着实现了所需的服务方法:

 void ControlHandler(DWORD request) {
        switch (request) {
        case SERVICE_CONTROL_STOP:
            ServiceStatus.dwCurrentState = SERVICE_STOP_PENDING;
            SetServiceStatus(hStatus, &ServiceStatus);
            break;
        case SERVICE_CONTROL_SHUTDOWN:
            ServiceStatus.dwCurrentState = SERVICE_STOP_PENDING;
            SetServiceStatus(hStatus, &ServiceStatus);
            break;
        }
        return;
    }

关机进程在硬盘上写入一个名为“terminate”的文件,并打开到JavaVM的socket连接(当然,它正在等待此连接)。这只是一个触发器,它告诉JavaVM检查“终止”文件,删除该文件并正确关闭。完成此操作后,服务也会正确终止。 当我通过sc stop MyServiceName关闭服务时,一切正常:文件被创建,JavaVM终止,服务在大约一秒钟内停止。 但当我关闭或重新启动计算机时,进程就会停止。创建了终止文件,但JavaVM日志或服务日志中没有正确关闭服务的日志条目。 我是否可以通过编程方式告诉服务控制管理器等待此服务


共 (0) 个答案