Если вы знаете свой рабочий процесс, у вас может быть фоновый поток, отслеживающий активность ваших соединений и закрывающий что-либо через определенное время (10 с, 30 с, 2 часа и т. Д.).
Вы также можете переопределитьметод финализации, как вы упомянули.Это пригодно для использования, просто не гарантировано.Но на любом достаточно загруженном сервере вы, вероятно, получите достаточно активности GC, чтобы он вовремя закрывал большинство ваших соединений.Предостережение о том, что с финализацией нет гарантии, - это просто принять, что если кто-то убьет процесс (или он неисправен, или что-то еще), ваш финализатор не будет вызван.
Наконец, это простой захват, когда соединение создаетсяпросто создав новое исключение и заполнив его трассировку стека.Держите это исключение вместе с открытым соединением, и когда вы обнаружите, что вы «вынуждены» закрыть его (через время, завершить или что-то еще), вы можете просто выгрузить исключение в свой журнал, чтобы найти оскорбительную «открытую» строку длясоединение.
Вы должны подключиться к жизненному циклу JCA для случая, когда соединитель разрушен или не развернут (например, когда модуль удален с сервера или сервер выключен).Это может сказать вам, какие соединения были оставлены открытыми, модуль был удален.