【问题标题】:Checking Database Server Status with Java使用 Java 检查数据库服务器状态
【发布时间】:2014-07-15 19:08:08
【问题描述】:

我想用 Java 检查数据库服务器的在线/离线状态。

我可以通过端口上的 Socket 连接来检查吗?我想在没有与 jdbc 的数据库连接的情况下执行此操作,因为登录和数据库系统信息是未知的。

【问题讨论】:

  • telnet 到服务器。
  • 不知道这个问题太宽泛,无法在这里讨论。
  • @LuiggiMendoza 这些天人们似乎对关闭的问题感到厌烦。

标签: java database sockets status


【解决方案1】:

您可以尝试以下方法:

    try {
        Socket socket = new Socket("127.0.0.1", port);  //Port dependent on your DB/Server
        // Server is up
        socket.close();
    }
    catch (IOException e)
    {
        // Server is down
    }

【讨论】:

    【解决方案2】:

    是的,你可以打开一个Socket 到你的数据库服务器的地址和端口,如果你得到一个IOException 服务器已经关闭。 (经过 postgress 测试)

    public boolean isDatabaseOnline(String address, int port) {
        boolean result;
    
        try {
            Socket socket = new Socket(address, port);
            socket.close();
    
            result = true;
        } catch (IOException e) {
            result = false;
        }
    
        return result;
    }
    

    【讨论】:

      【解决方案3】:

      以上方法并没有真正考虑到远程不可达的情况下超时,应该定义一个合理的超时时间,因为默认值是20秒!!

      您可以在创建空白套接字后使用socket.connect 方法声明超时。

      SocketFactory sf = SocketFactory.getDefault();
      
      try (Socket socket = sf.createSocket()) {
          socket.connect(new InetSocketAddress(ipAdder, port), timeoutInMillis);
          logger.info("database is up");
      } catch (IOException e) {
          logger.info("database is down");
      }
      

      上面的例子使用try with resources

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-14
        • 2016-03-17
        • 2021-11-11
        • 1970-01-01
        • 2023-01-17
        • 1970-01-01
        相关资源
        最近更新 更多