java实现windows系统服务

java实现windows系统服务

ID:34479494

大小:68.13 KB

页数:5页

时间:2019-03-06

java实现windows系统服务_第1页
java实现windows系统服务_第2页
java实现windows系统服务_第3页
java实现windows系统服务_第4页
java实现windows系统服务_第5页
资源描述:

《java实现windows系统服务》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Java实现Windows系统服务Windows系统服务(NT服务)相对于普通应用程序最直接的一个优点是系统启动后就可直接运行而无需用户登录系统。事实上,作为服务器来使用的系统,通常也并不需要登录系统,这样不只是方便,也提升了系统的安全性。不过,通常情况下,Windows系统服务使用C或C++实现,而有些时候基于某些因素的考虑,我们期望使用Java来实现系统服务,可以借助开源的JavaService达到此目的。以下演示其实现过程。首先编写实现NT服务的Java类,以下的示例代码通过两个类来达到实现NT服务的目的。类TestSe

2、rvice提供了NT服务启动及停止的控制方法,而类Service则实现了NT服务真正要完成的工作。类TestService及类Service的完整代码如下:packagecom.yanzhijun;importjava.util.Calendar;publicclassTestService{privatestaticThreadthread=null;privatestaticServiceservice=null;/***退出服务方法(该方法必须有参数String[]args)*@paramargs*/publicstat

3、icvoidStopService(String[]args){System.out.println("停止服务");service.setRunFlag(false);}/***启动服务方法(该方法必须有参数String[]args)*@paramargs*/publicstaticvoidStartService(String[]args){System.out.println("启动服务");//产生服务线程service=newService();thread=newThread(service);try{//将服务线

4、程设定为用户线程,以避免StartService方法结束后线程退出thread.setDaemon(false);if(!thread.isDaemon()){System.out.println("成功设定线程为用户线程!");}//启动服务线程thread.start();}catch(SecurityExceptionse){System.out.println("线程类型设定失败!");}}}classServiceimplementsRunnable{privatebooleanrunFlag=true;/***设定

5、服务线程运行标志值*@paramrunFlag*/publicsynchronizedvoidsetRunFlag(booleanrunFlag){this.runFlag=runFlag;}/***取得服务线程运行标志值*@paramvoid*/privatesynchronizedbooleangetRunFlag(){returnrunFlag;}@Overridepublicvoidrun(){System.out.println("服务线程开始运行");while(getRunFlag()){Calendarcal=

6、Calendar.getInstance();longmis=cal.getTimeInMillis();System.out.println("当前时间:"+mis);try{Thread.sleep(1000*10);}catch(InterruptedExceptione){e.printStackTrace();}}System.out.println("服务线程结束运行");}}类TestService中的方法StartService用于启动NT服务,而StopService方法则用于停止NT服务。从代码中可以看出方

7、法StartService与StopService实际上是分别实现了启动线程与终止线程的功能,而这里的线程就是实现NT服务的线程。这里有两点要特别注意:1.方法StartService与StopService都拥有参数String[]args,在安装NT服务时,可以指定启动或停止服务的参数,这些指定的参数将可以通过String[]args传递给方法StartService与StopService。在本例中由于演示的功能较为简单,故而未曾使到该参数。2.在StartService方法中启动线程之前,有必要将线程设定为用户线程。其

8、原因在于如果线程是一个后台线程,则当主程序结束后,JVM会自动退出,后台线程当然也就终止执行,而如果主程序结束时,还有用户线程在运行,则JVM不会自动退出,而是要等用户线程结束后才退出。因此,要保证NT服务正常运行,这一点也是要特别注意的。类Service是实现NT服务的线程

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。