Повторите попытку подключения с использованием JDBC - PullRequest
2 голосов
/ 24 мая 2011

Я использую JDBC для подключения к БД. Так как сеть была медленной, я мог получить соединение после 2 или 3 повторных попыток вручную. Можно ли повторить попытку подключения автоматически в случае сбоя подключения? Я использую базу данных SQLServer 2008. Спасибо

Ответы [ 2 ]

9 голосов
/ 24 мая 2011

Пул подключений с неплохим битом уже настроен для этого, например BoneCP .Большинство даже делают это по умолчанию.Если вы используете не пул соединений, а просто базовый DriverManager#getConnection() подход, вам придется выполнить его самостоятельно в цикле while, пока Connection равно null.

* 1008.* Вот пример basic kickoff:
Connection connection = null;

while (connection == null) {
    try {
        connection = DriverManager.getConnection(url, username, password);
    } catch (SQLException e) {
        logger.info("Connecting failed, retrying...");
    }
}

return connection;

Это, конечно, можно оптимизировать больше с немного более длинными паузами между ними и установкой максимального числа повторов, и так далее.

2 голосов
/ 13 октября 2016

Здесь код, с помощью которого он повторяет попытку 3 раза для подключения, вы также можете изменить продолжение вместо 3, его можно изменить любое количество раз (5,10 и т. Д.)

 Connection connection = null;
          while (connection == null && count<3){
            try {

                  String Connection="jdbc:sqlserver://"+serverip+';'+"database="+dbName+';'+"user=" +Username+';'+"password=" +Password;
                  Class.forName(classname); 
                  connection = DriverManager.getConnection(Connection); 

                }catch (SQLException e){
                    count++;
                    System.err.println("Connecting failed, retrying...");
            }
          }
          count=0;  
          return connection;                  
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...