Пересоединения в c3p0 регулируются следующими свойствами:
hibernate.c3p0.acquireRetryAttempts=...
hibernate.c3p0.acquireRetryDelay=...
hibernate.c3p0.breakAfterAcquireFailure=...
Посмотрите эту главу в руководстве по c3p0 для получения более подробной информации.
РЕДАКТИРОВАТЬ: обновление с подробностями в соответствии с комментарием автора вопроса.
Я использую эти настройки в реальном приложении, в котором настроены две базы данных (одна локальная / только для чтения и другая удаленная / только для записи). Эти настройки c3p0 используются для БД только для записи, поэтому, если соединение потеряно, c3p0 попытается восстановить соединение так, как я хочу. В противном случае настройки по умолчанию (если я правильно помню) установлены, так что переподключение выполняется довольно часто, и это потребляет много ресурсов процессора и заметно влияет на внешний интерфейс. К сожалению, мне больше нечего здесь вставить, так как эти настройки не используются в контексте Tomcat; У меня просто они в старом стиле .properties
файл.
Я не получил часть вашего комментария о "фактической процедуре". Переподключение настраивается в настройках пула базы данных. Если вы потеряете соединение во время оперативной транзакции, вы получите исключение (скорее всего, подкласс SQLException
или IOException
), и если вы знаете, что это вероятно, вам нужно обработать это самостоятельно, так как ни один пул БД не будет знать, что вы хочу сделать с этим (повторить? отменить? отложить?).