我知道这与已经回答的问题非常相似,但有一点点差异。
我的生产连接设置中有一个连接列表。过程是从第一个开始,并继续尝试,直到我得到一个连接。我希望能够运行一个使用相同列表作为其输入的任务,但确实足以显示应用程序将使用哪些连接。为了避免我们的安全团队感到烦恼,必须在没有用户名/密码的情况下完成。
有可能吗?
答案 0 :(得分:1)
以下答案可能对您有所帮助。 getErrorCode()
中的SQLException
方法在身份验证失败时返回1017值。因此,您可以遍历连接列表并调用validateConnection
。
替换主机,端口和SID值。
public static void main(String[] args) {
String connString = "jdbc:oracle:thin:@host:port:SID";
System.out.println(validateConnection(connString));
}
public static boolean validateConnection(String connString) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection(connString, "x", "y");
} catch (SQLException sqle) {
if (sqle.getErrorCode() == 1017)
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}