Wir haben ein System, in dem Daten nach Datum partitioniert sind. So haben wir beispielsweise in SqlServer eine Datenbank pro Monat mit Daten. Jede Monatspartition verwendet eine Jdbc-Treiber-Datenquelle, die in eine C3P0-Verbindungspool-DataSource eingebettet ist.
Nach einer gewissen Zeit wird der Datumsbereich der Partition alt genug, dass wir sie offline schalten wollen. In diesem Fall entfernen wir einfach die DataSource des jeweiligen Monats aus der verfügbaren Liste. Im Idealfall möchte ich beim Offlining jedoch die DataSource "schließen", damit der Pool alle Verbindungen zur DB aufgibt.
DataSource hat keine nahe Methode für mich anzurufen, also bin ich nicht sicher, wie man das aufräumt.
Irgendwelche Vorschläge?
Wenn Sie C3PO gepoolte DataSources verwenden, können Sie Threads und Verbindungen freigeben, die mit der DataSource verknüpft sind, indem Sie DataSources.destroy (DataSource) .
Sie schließen nicht DataSource
- Sie schließen die Verbindung returned mit einem DataSource
. Das DataSource
selbst ist niemals als solches "offen".
Ich würde erwarten, dass der Pool offene Verbindungen nach einer Auszeit aufgibt, also schlage ich vor, dass Sie sich darüber keine Gedanken machen :) Wenn Sie die Verbindungen zwangsweise schließen müssen, müssen Sie einen Verweis darauf behalten den Verbindungspool selbst verwenden und alle von c3p0 bereitgestellten Funktionen direkt verwenden.
Tags und Links java datasource c3p0