WEB开发网
开发学院软件开发Java 判断Wrapper Service注册的服务是否启动 阅读

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

 2009-09-26 00:00:00 来源:WEB开发网   
核心提示:在我以前的一篇文章中介绍了使用Apache Wrapper Service这个工具将Java程序注册成操作系统的服务,如果你采用”实现WrapperListener这个接口并结合wrapper.conf” 这种方式来启动服务,而且在wrapper.conf配置文件中将wrapper.ignore

在我以前的一篇文章中介绍了使用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());

Tags:判断 Wrapper Service

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接