Wie schließe ich eine java.sql.DataSource
Wir haben ein system, wo Daten nach Datum partitioniert. So zum Beispiel in SQL Server haben wir eine Datenbank pro Monat von Daten. Jeden Monat partition verwendet eine Jdbc-Treiber, Datasource-verpackt in einem C3P0 connection pool, DataSource.
Nach einem Zeitraum von Zeit, Datum-Bereich der partition wird alt genug, dass wir wollen, um es offline. In diesem Fall entfernen Sie einfach den entsprechenden Monat Datenquelle aus der Liste aus. Allerdings ideal, wenn offlining ich würde gerne auf das "schließen" wird die DataSource also den pool verzichtet, alle verbindungen zu der DB.
DataSource hat keine close-Methode für mich zu nennen, so bin ich nicht sicher, wie man diese Situation bereinigen.
Irgendwelche Vorschläge?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht aus wie wenn Sie mit C3PO gebündelt DataSources, dann können Sie release-threads und verbindungen im Zusammenhang mit der DataSource DataSources.zerstören(DataSource).
Du nicht in der Nähe einer
DataSource
- schließen Sie die Verbindung zurückgegeben durch eineDataSource
. DieDataSource
selbst ist nie "offen" als solche.Ich würde erwarten, dass der pool zu verzichten offenen verbindungen nach einem time-out wie auch immer, ich schlage vor, Sie einfach nicht darum kümmern 🙂 Wenn Sie brauchen, um gewaltsam schließen die verbindungen, die Sie benötigen, um einen Verweis auf das connection-pool selbst und nutzen alle Einrichtungen geliefert von c3p0 direkt.
In meinem Fall, @sudocode Antwort hat nicht funktioniert, also habe ich gewonnen die pooled Datasource und ich Schloss es: