Я не уверен, что он будет работать так, как вы его описали (прозрачно).
Допустимая проверка соединения (это может быть либо инструкция sql в файле * ds.xml, либо класс, который выполняетподъем) предназначен для вызова, когда соединение берется из пула, так как база данных могла закрыть его, пока оно находится в пуле.Если соединение больше не является действительным, оно закрывается и запрашивается новое из БД - это полностью прозрачно для приложения и происходит (как вы говорите) только тогда, когда соединение вынимается избассейн.Затем вы можете использовать это в своем приложении в течение длительного времени.
Сортировщик исключений предназначен для того, чтобы сообщать приложению, если, например, ORA-0815 является безвредным или плохим return кодом для SQLзаявление.Если он безвреден, он в основном проглатывается, а для плохого он сообщается приложению как исключение.
Таким образом, если вы хотите использовать сортировщик исключений для поиска плохих соединений в пуле, вы должны быть готовы к тому, что в основном каждое выполняемое вами заявление может вызвать исключение устаревшего соединения, и вам нужно будет закрыть соединениеи попробуйте получить новый.Это означает соответствующие изменения в вашем коде, что вы, конечно, можете сделать.
Я думаю, что время от времени запускать дешевый SQL-оператор в БД, чтобы проверить, все еще ли соединение из пула все еще действует, намного меньшедороже, чем выполнять всю эту проверку «вручную».
Кстати: хотя есть универсальная программа проверки соединения sql, которая работает со всеми базами данных, некоторые базы данных предоставляют другой способ проверки работоспособности соединения;В Oracle есть специальная команда ping для этого, которая используется в специальном классе OracleConnectionChecker, на который вы ссылаетесь.Поэтому может случиться так, что для MS-SQL есть нечто похожее, что дешевле, чем простая инструкция SQL.