使用Java检查数据库服务器状态

时间:2014-07-15 19:08:09

标签: java database sockets status

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

我可以通过端口上的Socket连接来检查吗?我希望与jdbc建立数据库连接,因为登录和数据库系统信息未知。

3 个答案:

答案 0 :(得分:6)

您可以尝试以下操作:

    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
    }

答案 1 :(得分: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;
}

答案 2 :(得分:0)

如果远程无法访问,上述方法并未真正考虑超时,应定义合理的超时,因为默认值为20秒!!

您可以在创建空白套接字后使用Collection<PSObject>方法声明超时。

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");
}

上面的示例使用socket.connect