Frage

Wie der TimeToLiveConnectionTimeoutCallback innerhalb Oracle UCP (Universal Connection Pool) benutzen?

Ich würde erwarten, dass entweder die Pooldatasource oder die UniversalConnectionPoolManager eine Schnittstelle so einen Rückruf registrieren hat. Und ich würde erwarten, dass eine solche Schnittstelle die betreffende Verbindung durch die Schnittstelle passieren würde. Weder ist wahr.

Es scheint, dass ich eine individuelle TimeToLiveConnectionTimeoutCallback zu jedem UniversalPooledConnection registrieren, die heikel, hässlich (viele UCP Importe / Glue-Code) erscheint mir und schwer (eine Datasource-Wrapper erstellen).

Oder komme ich etwas falsch gemacht? Leider ist die Dokumentation schweigt.

War es hilfreich?

Lösung

Nach einiger Zeit verging, wurde mir klar, dass meine Annahme zutrifft. Ich habe einen Rückruf an jeden Connection in einer schwierigen und unelegant Weise zu registrieren.

ich auch eine Support-Anfrage von Oracle eröffnet, der dies bestätigt:

void registerTimeToLiveConnectionTimeoutCallback (TimeToLiveConnectionTimeoutCallback CBK) wirft java.sql.SQLException

registriert eine Time-to-Live-Verbindung Timeout Rückruf mit einer Verbindung.

Das Callback-Objekt registriert ist mit jede zusammengefasste Verbindung. Es ist ein Fehler registrieren mehr als 1 TimeToLiveConnectionTimeoutCallbacks auf derselben Verbindung, oder Sie erhalten eine Ausnahme wird.

Wie erwähnt, der Rückruf Objekt wird mit jeder gepoolten registriert Verbindung.

Durch einige andere Bugs und / oder Konstruktionsfehler (natürlich letztere könnte sein, subjektiv) Ich beschloss, nicht UCP in meinem Projekt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top