我有一个名为Parameter的类,它包含不同的值,包括java.sql.Clob
使用JDBC4规范,我们可以调用free()
方法来释放分配给Clob
对象的资源。我正在考虑将Parameter
类设为AutoClosable
并在free()
内调用close()
方法
这很好,但我也想要强制执行或至少暗示其他人Parameter
是AutoClosable
的实例
除了文档之外还有办法实现这个目标吗?基本上我正在寻找在这种情况下可以做的额外事情。
答案 0 :(得分:1)
通常的方法是使用可配置的超时实现ObjectPool
。从ObjectPool
获取对象时开始计数,并检查它是否在超时结束时返回到池中。如果未将Object
返回到池中,则抛出异常或强制释放Object
保留的资源。这样,您将强制程序员调用close()
方法或检测泄漏。
大多数数据库连接池库都具有此功能。查看JDBCConnectionPool - InactiveConnectionTimeoutSeconds和Apache Commons Pool - AbandonedConfig