看起来一个方面可能会有所帮助。
如何包装在方面中返回结果集的方法。就像是:
execution(public java.sql.ResultSet+ java.sql.Statement+.*(..))
另一个方面可以监视ResultSet上的close方法。可能:
execution(public * java.sql.ResultSet.close())
第一个方面是,在返回每个ResultSet时,将创建一个新的Exception对象,并使用ResultSet的哈希值作为键将其存储在某个静态Map中。第二方面,在结果集关闭时,将使用相同的哈希码作为键从Map中删除Exception。映射在任何时候都应为每个打开的ResultSet都具有一个异常实例。从异常中,您可以获得堆栈跟踪,以查看ResultSet的打开位置。
您也许可以存储一个更大的对象,其中包括一个异常和一些其他上下文信息。创建ResultSet的时间,等等。



