技术开发 频道

将Java程序转换为Windows服务



四、安全地退出Java程序

    我们首先调用System.exit(0)来退出程序。虽然这个方法同时调用了所有的shutdown钩子,也试着关闭JVM。但它在清除和用于和SCM建立的Windows服务通讯的管道时抛出异常。这些错误信息如下:

System error 109 has occurred.
     The pipe has been ended.
    因此,本文采用了更好的方式来关闭服务,也就是实现shutdown方法,并调用它。我建议在线程中使用public static void shutdown()方法(如果这个方法被实现的话),并设置一定的超时,如20秒。这将防止服务如果shutdown方法未返回而收到未响应的信息。但要保证这个超时比系统超时少,否则SCM将终止我们的服务进程。
0
相关文章