使用Java检查数据库服务器状态
我想检查使用Java的数据库服务器的联机/脱机状态使用Java检查数据库服务器状态,java,database,sockets,status,Java,Database,Sockets,Status,我想检查使用Java的数据库服务器的联机/脱机状态 我可以通过端口上的套接字连接检查这一点吗?我想通过与jdbc的数据库连接来执行此操作,因为登录名和数据库系统信息未知。您可以尝试以下操作: try { Socket socket = new Socket("127.0.0.1", port); //Port dependent on your DB/Server // Server is up socket.close(); }
我可以通过端口上的套接字连接检查这一点吗?我想通过与jdbc的数据库连接来执行此操作,因为登录名和数据库系统信息未知。您可以尝试以下操作:
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
}
是的,只要打开数据库服务器地址和端口的
Socket
,如果得到IOException
服务器已关闭。(用postgress测试)
上述方法在远程无法到达的情况下没有真正考虑超时,并且应该定义一个合理的超时,因为默认值是20秒!!p> 创建空套接字后,可以使用该方法声明超时
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");
}
上面的例子使用telnet连接到服务器。不确定这个问题怎么会太广泛而无法在这里讨论。@LuiggiMendoza的人最近似乎在讨论这个问题。
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");
}