在我的应用程序架构中,我有两个数据库服务器主数据库和辅助数据库服务器(副本服务器)。
在我的 java 代码中,我正在与 DB 建立连接以获取一些数据,现在我想要的是我将在我的代码中提供两个 DB 服务器的 IP 地址,并检查哪个 DB 服务器是可访问的,并且只连接那个服务器。但我不知道如何实现它,一种方法是尝试远程登录,但不是一个好的选择,因为出于某些原因我想禁用应用程序服务器上的远程登录。
有没有其他最好的方法来做到这一点?
在我的应用程序架构中,我有两个数据库服务器主数据库和辅助数据库服务器(副本服务器)。
在我的 java 代码中,我正在与 DB 建立连接以获取一些数据,现在我想要的是我将在我的代码中提供两个 DB 服务器的 IP 地址,并检查哪个 DB 服务器是可访问的,并且只连接那个服务器。但我不知道如何实现它,一种方法是尝试远程登录,但不是一个好的选择,因为出于某些原因我想禁用应用程序服务器上的远程登录。
有没有其他最好的方法来做到这一点?
就个人而言,我只会尝试连接(使用标准数据库类)并在连接失败时处理异常。
即使您最初确认连接,也没有什么可以阻止在该测试与您实际尝试使用数据库之间发生网络问题。
您可以尝试 ping 两台主机并使用响应的主机。这是一个示例程序。
InetAddress address = InetAddress.getByName("172.16.2.0");
// Try to reach the specified address within the timeout
// periode. If during this periode the address cannot be
// reach then the method returns false.
boolean reachable = address.isReachable(10000);
System.out.println("Is host reachable? " + reachable);
有关更详细的程序,请参阅 Java 中的此Ping 程序示例。