我想检查一下使用Java的数据库服务器的在线/离线状态。
我可以通过端口上的Socket连接来检查吗?我希望与jdbc建立数据库连接,因为登录和数据库系统信息未知。
答案 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