将Java应用程序转换为Windows服务
【IT168技术文档】
至少15-21个可配置参数可从集成JNI和Windows服务API中产生,下面是一些定制程序时可能适合的参数:
Windows服务参数:
服务名称
显示名称
描述
执行路径
启动类型(自动/手动)
工作目录
每个进程的一个服务或者单个进程的多个服务
与桌面选项相互作用(如果服务有UI组件)
登录名和密码(运行服务使用一个用户的帐户或者本地系统帐户)
Java应用程序指定参数:
JVM.dll的路径
JVM选项(-D,-X)
类名
任何命令行参数
关闭时间
Log参数:
时间log和文件log
重定向任何表准的输出/错误到某个文件
安装期间,可以根据需求,在推荐位置HKLM\System\CurrentControlSet\[Service Name]\Parameters存储参数。
关闭Java App
虽然调用Systen.exit(0)方法可以关闭JVM,但是不能清除Windows服务和SCM建立的管道通讯,因此使用Systen.exit调用,但当停止服务时,却得到下列错误:
System error 109 has occurred.
The pipe has been ended.
可以实现一个单独的关闭方法并调用,可以调用public static void shutdown()方法,用20秒的时间以一个单独的线程关闭,如果关闭方法没有返回值,这可以阻止服务产生没有响应的状态,当然可以根据需求设置时间,但是要确保少于系统时间,否则SCM将终止服务进程。