判断Wrapper Service注册的服务是否启动

在我以前的一篇文章中介绍了使用Apache Wrapper Service这个工具将Java程序注册成操作系统的服务,如果你采用”实现WrapperListener这个接口并结合wrapper.conf” 这种方式来启动服务,而且在wrapper.conf配置文件中将wrapper.ignore_signals属性设置为true,Wrapper Service提供的API是无法正确的判断服务是否正常的启动,因为wrapper.ignore_signals属性用来屏蔽操作系统的消息机制,比如在启动服务的命令行窗口按Ctrl+C或者关闭启动服务的命令行窗口的时候,服务也不会停止,这样可以防止误操作。

其实在Wrapper Service这个工具是通过Socket和JVM进行通信(顺便说一下,这样服务能否正常启动可能会受到本机防火墙的影响,我碰到过这种情况),在 Wrapper Service的配置文件中可以指定服务使用的端口(默认为随机选择端口,这样很不可靠),这样的话可以通过Java的Socket来判断服务是否可以正常的启动.

比如我们的服务使用的端口是3976,判断的Java代码是:

/**
    * 检查服务器连接状态。
    * @author vwpolo
    * @return String
    */
   private String getWrapperServiceState() {
     try {
       InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1",3976);
       Socket socket = new Socket();
       socket.connect(socketAddress,60000);
       return "已启动";
     }catch (Exception e) {
       return "已经停止";
     }
   }

测试代码:

System.out.println("服务启动状态: "+ getWrapperServiceState());

时间: 2024-09-28 05:26:01

判断Wrapper Service注册的服务是否启动的相关文章

vc 如何创建服务-VC 开机自动启动。不用写注册表的方法。想写一个服务来启动这个程序。

问题描述 VC 开机自动启动.不用写注册表的方法.想写一个服务来启动这个程序. 有个EXE程序想要它开机自动启动.我不想用写注册表的方法启动.看能不能够写一个服务来启动这个程序.如果可以麻烦大家能够提供源码.谢谢!!!!! 解决方案 创建服务,CreateService()

操作系统-IIS服务无法启动,service正在运行,否则无法启动应用程序池

问题描述 IIS服务无法启动,service正在运行,否则无法启动应用程序池 是系统缺少什么吗,怎么会这样 解决方案 看下是不是有别的软件占用了端口.先把不相干的软件都关掉.把iis停止,然后停止服务,重新启动.再不行重装下系统. 解决方案二: 如何解决的,分享一下 解决方案三: IIS6.0 应用程序池无法启动

请问:java代码如何判断服务是否启动?谢谢!!

问题描述 请问:java代码如何判断服务是否启动?谢谢!! 急求: java代码如何判断服务是否启动?谢谢!! 解决方案 http://www.360doc.com/content/12/0711/09/2905268_223518890.shtml 解决方案二: 一般服务启动都是启动在某IP的某个端口上,通过Socket去连下你们服务启动的IP和端口.看是否能连的通.如果连的通,表示服务已启动,但请注意,服务启动不代表服务一定正常可用. 附上代码. /** * * 测试连接服务器 * * @p

Window Service 服务中启动有界面进程

问题描述 window服务账户为LocalSystem,在服务中启动新进程,在进程中报错//子进程代码System.Threading.Thread.Sleep(30*1000);log4net.Config.XmlConfigurator.Configure();varloger=log4net.LogManager.GetLogger("TEST");loger.Info("Start");try{for(inti=0;i<100;i++){Labella

将Java程序注册成系统服务

你是不是在找将Java程序注册成系统服务的方法?试试Java Service Wrapper这个工具吧,你可以从这个网站上面下载你喜欢的版本:http://wrapper.tanukisoftware.org/ ,Java Service Wrapper提供了适合市面上流行的操作系统的版本. 使用Wrapper将Java程序注册成系统服务有三种方式可供选择: 第一种是使用WrapperSimpleApp 这个帮助类来运行你的程序,这个是最简单的方法,也是官方推荐使用的方式,但是这样可能会对你的程

win8系统怎样开启和连接远程注册表服务

在Windows中,远程注册表服务是一项标准的.被win8系统所支持的服务.这一点可以从两个方法看得出来. 一是在注册表编辑器的"文件"→"连接网 络注册表"菜单中,可以看到此项功能的存在. 二是在"运行"对话框中输入命令"Services.msc"并按回车键后,在弹出的"服务"窗口中, 可以看到专门为远程管理注册表设计的服务项. 其中,后者是用于开启远程管理注册表功能 的服务项,前者则是用于连接远程注册表

Win7系统Software Protection服务无法启动怎么办

  1.开始→运行→输入:services.msc 点击确定(或按回车键)打开服务. 2.依次找到:Software Protection服务(服务名称sppsvc)→右键启动. 3.如果启动菜单是灰色的(不可用)服务属性→启动类型→自动或者手动→应用→启动→确定. 4.如果这个Software Protection服务(服务名称sppsvc)没有,需要从好的相同的操作系统中导入相应的注册表项目.在好的电脑中在[开始]→[运行]中输入: regedit 按回车键之后,打开注册表编辑器. 5.依次

Oracle监听器服务不能启动的解决方法_oracle

Oracle监听器服务不启动的时候可采取以下措施予以解决: 一.连接主机字符串,提示没有监听器 SVRMGR> connect internal/oracle@orcl: ORA-12541: TNS:no listener SVRMGR> 二.运行监听器,提示地址的协议专用组件指定不正确 在开始菜单运行中键入lsnrctl LSNRCTL for 32-bit Windows: Version 9.0.1.1.1 - Production on 08-6月 -2006 14:31:53 Co

WIN 10 IIS 服务或万维网发布服务,或者依赖这两种服务的某个服务未能启动。该服务或所依赖的服务可能在启动期间发生错误或者已禁用。

环境:win10 企业版 今天重启iis的时候报出了下面的错误: 即:IIS 服务或万维网发布服务,或者依赖这两种服务的某个服务未能启动.该服务或所依赖的服务可能在启动期间发生错误或者已禁用.在网络上搜索解决方案,比如: 即:点击打开链接 这三个服务我也禁止了: 上面的方案我在win7下操作成功了(之前win7下也遇到过这个问题),但在win 10下没有效果. 于是查看系统日志: 具体信息如下:日志名称:          System来源:            Service Control