2010-12-14 2 views
0

Как использовать TimeToLiveConnectionTimeoutCallback в Oracle UCP (Universal Connection Pool)?Как использовать TimeToLiveConnectionTimeoutCallback в Oracle UCP

Я бы ожидал, что либо PoolDataSource, либо UniversalConnectionPoolManager имеет интерфейс для регистрации такого обратного вызова. И я ожидал бы, что такой интерфейс передаст соответствующее соединение по интерфейсу. И это не так.

Кажется, что я должен зарегистрировать отдельный TimeToLiveConnectionTimeoutCallback для каждого UniversalPooledConnection, который кажется мне сложным, уродливым (много импорта/кода UCP) и сложным (создайте обертку DataSource).

Или у меня что-то не так? К сожалению, документация остается беззвучной.

ответ

0

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

Я также открыл запрос в службу поддержки от оракула, который подтвердил это:

недействительным registerTimeToLiveConnectionTimeoutCallback (TimeToLiveConnectionTimeoutCallback Cbk) бросает java.sql.SQLException

регистрирует время выхода на живую связь callback с соединением.

Объект обратного вызова зарегистрирован для каждого объединенного соединения. Это ошибка для регистрации более 1 TimeToLiveConnectionTimeoutCallbacks в том же соединении, иначе вы получите .

Как упоминалось в нем, обратный вызов объект зарегистрирован в EACH объединенном соединении.

Из-за некоторые другие ошибки и/или конструктивных недостатки (конечно, последний может быть субъективными) я решил не UCP в рамках моего проекта.