2016-06-23 105 views
0

我有一個類名爲參數封裝不同的價值觀,包括java.sql.Clob如何強制釋放資源?

隨着JDBC4規範,我們有一個free()方法,其可稱爲分配給Clob對象免費資源。我想製作Parameter類的AutoClosable並調用free()方法的內部close()

這工作了偉大的,但我也想要的東西強制執行,或者至少暗示其他人Parameter是除了文檔的AutoClosable

實例有辦法實現這一點?基本上我正在尋找額外的東西,可以在這種情況下做。

+2

誰應該使用'Parameter'給程序員這個提示? IDE?編譯器? –

+0

[AutoCloseable](https://docs.oracle.com/javase/8/docs/api/java/lang/Au​​toCloseable.html)是一個界面。除了執行它,還有什麼更多的「提示」? – Fildor

+0

@Lutz Horn我從IDE的角度思考。我知道我的問題是荒謬的,但我沒有更好的方式來表達它。 :) – VishalDevgire

回答

1

通常的做法是使用可配置的超時實現ObjectPool。當從ObjectPool獲取對象時開始計數,並檢查它是否在超時結束時返回到池。如果Object未返回到池中,則拋出異常或強制釋放Object保留的資源。這樣你就可以強制程序員調用close()方法或檢測泄漏。

大多數數據庫連接池庫都具有此功能。檢查JDBCConnectionPool - InactiveConnectionTimeoutSecondsApache Commons Pool - AbandonedConfig