====== BoneCP ======
* **Deprecated** 개발자가 HikariCP를 추천하고 있음.
* http://jolbox.com/
* Multi Core CPU 지원, JDBC Connection Pool
===== 설정 예(Spring) =====
* [[http://jolbox.com/bonecp/downloads/site/apidocs/com/jolbox/bonecp/BoneCPConfig.html|BoneCPConfig (BoneCP :: Core Library 0.7.1.RELEASE API)]]
* ''idleMaxAge''는 ''idleConnectionTestPeriod''보다 커야한다. 그렇지 않으면 idleMaxAge에 도달하면 커넥션을 끊어버리기 때문에 실제로 ''idleConnectionTestPeriod''는 사실상 필요가 없어지게 된다.
===== JMX MBean =====
* 기본적으로 JMX MBean을 생성해준다.
* 해당 MBean의 이름은 ''setPoolName()''으로 지정한 이름이된다.
* ''boneCpDataSource.getConnection()''이 한 번이라도 호출이 되어야만 MBean이 생성된다.
===== 0.8.RELEASE bug =====
WARN ConnectionPartition.finalizeReferent - BoneCP detected an unclosed connection (in pool 'pool name') and
will now attempt to close it for you. You should be closing this connection in your application - enable
connectionWatch for additional debugging assistance or set disableConnectionTracking to true to disable
this feature entirely.
# 위 WARNING이 발생하면서 MySQL 사용시에 다음과 같은 오류가 연쇄 발생
....
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
No operations allowed after connection closed.
[[https://bugs.launchpad.net/bonecp/+bug/1259257|Bug #1259257 “BoneCP 0.8.0-release erroneously detecting unclose...” : Bugs : BoneCP]] 버그 리포팅 돼 있는 상태.
''**boneCpDataSource.setDisableConnectionTracking(true);**''로 문제 해결됨.
// Spring 등을 통해 connection release가 100% 보장되는 경우 다음처럼 커넥션 트랙킹을 disable.
boneCpDataSource.setDisableConnectionTracking(true);
// 다른곳에서의 해결책 : https://groups.google.com/forum/#!topic/play-framework/eshzvWuNQcc
boneCpDataSource.setStatisticsEnabled(true);
boneCpDataSource.setReleaseHelperThreads(2); // 이 값을 2로하면 문제가 사라진다 함.
===== Connection 끊김 문제 =====
* 아래와 같은 에러가 발생한다.
Database access problem. Killing off this connection and all remaining connections in the connection pool. SQL State = 08007
Communications link failure during rollback(). Transaction resolution unknown.
* 실제 DB 접속이 끊겨서 발생하는 오류인 듯 함. ping 쿼리 주기와 실제 ping이 날라가는지 확인 해 볼 것. 또한 ping을 날린다 하더라도 DB설정이나 네트워크 라우터 등에서 끊을 가능성도 배제할 수 없슴.