2016-06-23 16 views
0

Ich habe eine Klasse namens Parameter, die verschiedene Werte hüllt einschließlich java.sql.ClobWie erzwinge Freigabe von Ressourcen?

Mit JDBC4 Spezifikation haben wir eine free() Methode, die freien Ressourcen zu Clob Objekt zugeordnet aufgerufen werden kann. Ich denke da an machen Parameter Klasse ein AutoClosable und rufen free() Methode innerhalb close()

Dies funktioniert gut, aber ich will auch etwas erzwingen oder zumindest anderen Hinweis, dass Parameter ist eine Instanz AutoClosable

Anders als Dokumentation Gibt es einen Weg, dies zu erreichen? Im Grunde bin ich auf der Suche nach etwas, das man in dieser Situation tun kann.

+2

Wer soll diesen Tipp Programmierer mit "Parameter" geben? Die IDE? Der Compiler? –

+0

[AutoCloseable] (https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html) ist eine Schnittstelle. Was für einen "Tipp" willst du anderes als implementieren? – Fildor

+0

@Lutz Horn Ich dachte aus IDE-Sicht. Ich weiß, dass meine Frage absurd ist, aber ich kann es nicht besser sagen. :) – VishalDevgire

Antwort

1

Üblicherweise wird ein ObjectPool mit einem konfigurierbaren Timeout implementiert. Beginne zu zählen, wenn das Objekt von ObjectPool entnommen wurde und überprüfe, ob es am Ende des Timeouts in den Pool zurückkehrt. Wenn die Object nicht an den Pool zurückgegeben wird, eine Ausnahme auslösen oder die Ressourcen, die Object hält, zwangsweise freigeben. Auf diese Weise zwingen Sie den Programmierer, die Methode close() aufzurufen oder Lecks zu erkennen.

Die meisten Datenbankverbindungsbibliotheken verfügen über diese Funktion. Überprüfen Sie JDBCConnectionPool - InactiveConnectionTimeoutSeconds und Apache Commons Pool - AbandonedConfig

Verwandte Themen