判断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());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值