Может кто-нибудь посоветовать следующую общую проблему Java
Вот некоторый псевдокод (исключение обработки исключений и т. Д.) Для обозначения возникшей у меня проблемы:
public void initializeConnection(DataSource dataSource) {
// Declare collection to hold all connections
Collection<Connection> pool = new ArrayList<Connection>();
// Loop through all connections
int i = 0;
while(i <= dataSource.getMaxActive()){
Connection conn = dataSource.getConnection();
// do something with connection, then add it to a collection
pool.add(conn)
i++;
// REMOVE THIS PRINT OUT AND CODE THROWS GETCONNECTION TIMEOUT EXCEPTION
System.out.println( i );
}
// Traverse through the collection and close all connections
}
Код довольно прост:
- Перебрать все соединения в источнике данных
- Делать что-то с каждым соединением (более конкретно, использовать его для вызова хранимой процедуры, чтобы инициализировать состояние базы данных для соединения)
- Сохраните соединения в коллекции, чтобы затем их можно было закрыть (если соединение будет закрыто немедленно, это прекратит нам цикл всех соединений).
Приведенный выше код работает нормально,Проблема заключается в следующем: при удалении оператора печати выдается исключение тайм-аута, так как в течение 30 секунд не может быть найдено новое соединение.Так что, похоже, возникает какая-то проблема с потоками или временем - очевидно, что-то сломано, и это работает только из-за задержки, которая происходит из-за оператора print.
У кого-нибудь есть идеи, почему это происходит?
Спасибо!