2010-12-14 4 views
0

Comment utiliser TimeToLiveConnectionTimeoutCallback dans Oracle UCP (Universal Connection Pool)?Comment utiliser TimeToLiveConnectionTimeoutCallback dans Oracle UCP

Je suppose que le PoolDataSource ou le UniversalConnectionPoolManager dispose d'une interface pour enregistrer un tel rappel. Et je m'attendrais à ce qu'une telle interface passe la connexion concernée par l'interface. Aucun n'est vrai.

Il semble que je doive enregistrer un TimeToLiveConnectionTimeoutCallback individuel à chaque UniversalPooledConnection qui me semble difficile, moche (beaucoup d'importations/code de colle UCP) et difficile (créer un wrapper DataSource).

Ou ai-je eu quelque chose de mal? Malheureusement, la documentation reste silencieuse.

Répondre

0

Après un certain temps, j'ai réalisé que mon hypothèse est vraie. Je dois enregistrer un rappel à chaque Connection d'une manière délicate et non-délégante.

I a également ouvert un demande de support de oracle qui a confirmé ceci:

vide registerTimeToLiveConnectionTimeoutCallback (TimeToLiveConnectionTimeoutCallback CBK) lance java.sql.SQLException

enregistre un temps-to-live connexion rappel de délai d'expiration avec une connexion. L'objet de rappel est enregistré avec chaque connexion groupée. Il s'agit d'une erreur pour enregistrer plus de 1 TimeToLiveConnectionTimeoutCallbacks sur la même connexion, sinon vous obtiendrez une exception.

Comme mentionné dans ce document, l'objet de rappel est enregistré avec CHAQUE connexion .

En raison de quelques autres bugs et/ou des défauts de conception (bien sûr, ce dernier pourrait être subjectif) j'ai décidé de ne pas UCP dans mon projet.

Questions connexes