JDBC DriverManager определить, находится ли пользователь в сети, прежде чем пытаться подключиться к базе данных? - PullRequest
0 голосов
/ 05 ноября 2018

Я работаю над приложением Java, которое можно использовать как подключенное к моей офисной сети, так и нет.

Моя проблема в том, что когда пользователь не подключен, DriverManager.getConnection() требуется до 20 секунд, прежде чем окончательно сообщать, что он не может подключиться к базе данных.

Код, который соединяет меня или нет с сервером:

public static Connection getConnection() {
    try{
        //cnx is my Connection object
        if(cnx ==null || cnx.isClosed()){
            Class.forName("com.mysql.jdbc.Driver");

            //Get the connection if possible
            cnx = DriverManager.getConnection(connectionString, user, password);
        }
        /*
        Basically, I'm just checking if "ConfigUser.isConnected()" is true
        later in the code to know if I should try to execute SQL queries
        */
        ConfigUser.setConnected(true);
        return cnx;
    }
    catch (Exception e){
    }
    ConfigUser.setConnected(false);
    return null;
}

Я пытался использовать функцию DriverManager.setLoginTimeout(), но, похоже, она ничего не изменила.

1 Ответ

0 голосов
/ 05 ноября 2018

Добавить к connectionString время ожидания подключения в миллисекундах :

&connectTimeout=5000

ConnectTimeout

Тайм-аут для подключения через сокет (в миллисекундах), при этом 0 не имеет времени ожидания. Работает только на JDK-1.4 или новее. По умолчанию «0».

...