将Java应用程序转换为Windows服务
【IT168技术文档】
集成JNI和Windows服务API
需要不断的运行Java应用程序来证明服务的性能,写一个简单的Dummy.java类在main方法内部为了阻塞结果,Dummy.java类也实现一个关闭的挂起,主要是在执行java.exe时使用。
典型的Widows服务(除了设备驱动)是用户进程,被服务控制管理器SCM(Service Control Manager )执行和管理。也包括services.exe进程,一个单进程包括许多服务。在此设计中,每个进程中包括一个JVM实例和一个Windows服务。
安装一个服务要求得到一个对SCM的处理和创建一个服务:
卸载要求得到对服务的处理和调用删除:SC_HANDLE schSCManager = OpenSCManager(..), SC_MANAGER_CREATE_SERVICE);
SC_HANDLE schService = CreateService(..)
为了启动服务,使用StartServiceCtrlDispatcher注册ServiceMain功能,ServiceMain功能包括主要的功能,本例中,调用InvokeMain函数,下一步调用RegisterServiceCtrlHandler(SERVICE_NAME, ServiceHandler);它注册一个接收SCM的操作。为避免整个服务瘫痪,当JVM终止发生时,在单独的线程中执行InvokeMain方法。SC_HANDLE schSCManager = OpenSCManager(.., SERVICE_ALL_ACCESS);
SC_HANDLE schService = OpenService( schSCManager, ..);
DeleteService(schService)
为自己演示Dummy服务,创建VS 2005工程DummyService,复制Dummy.java到C:\,并编译代码。运行下列命令安装,启动,停止和卸载服务:
DummyService /i (installs the service)
net start DummyService
net stop DummyService
DummyService /u (uninstalls the service)
0
相关文章
