kac*_*nov 13 java logging apache-commons-dbcp
我正在使用Apache Commons DBCP.有一项任务是跟踪DBCP的内部行为 - 活动和空闲连接的数量.
我发现DBCP根本没有任何这样的日志记录.是的,当从池中借用连接时,可以编写输出BasicDataSource状态的代码.但是,在返回或关闭连接时,无法跟踪BasicDataSource的状态,因为连接对象对池没有任何了解.
有任何想法吗?
我认为方面可能是你的quandry的解决方案.查看:
基本上,您可以编写一个或两个方面来"锁定"DBCP内部某些方法的执行.
就像是:
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.ProceedingJoinPoint;
@Aspect
public class AroundExample {
@Around("org.apache.commons.dbcp.PoolingDataSource.getConnection()")
public Object doBasicPStuff(ProceedingJoinPoint pjp) throws Throwable {
// write code to do what you want
final PoolingDataSource ds = (PoolingDataSource) pjp.getThis();
// log whatever you want
// let it finish
Object retVal = pjp.proceed();
// stop stopwatch
return retVal;
}
}
Run Code Online (Sandbox Code Playgroud)
这只是一个很小的例子.方面非常强大,有很多不同的方法可以做你想要的.代码取决于您是否使用Spring,以及您想要记录的内容.
PS我还没有测试过上面的代码.
| 归档时间: |
|
| 查看次数: |
5940 次 |
| 最近记录: |