Play 1.2.5에서 JDBI를 사용하려고하고 있으며 데이터베이스 연결이 끊어지는 문제가 있습니다. 그래서 같이 Play의 DB.datasource를 사용 jdbi 인스턴스 얻기 위해Playframework 1.2.5 및 JDBI
내가 만든 클래스 (application.conf, DB = MEM 단위) H2 메모리 데이터베이스를 사용하고 있습니다 :
public class Database {
private static DataSource ds = DB.datasource;
private static DBI getDatabase() {
return new DBI(ds);
}
public static <T> T withDatabase(HandleCallback<T> hc) {
return getDatabase().withHandle(hc);
}
public static <T> T withTransaction(TransactionCallback<T> tc) {
return getDatabase().inTransaction(tc);
}
}
때마다 나는 데이터베이스 호출을 수행 새로운 DBI 인스턴스가 만들어 지지만 항상 같은 정적 데이터 소스 오브젝트 (play.db.DB.datasource)
를 래핑, 잠시 후 나는 다음과 같은 얻고있다 일이 뭐죠 :
을 CallbackFailedException occured : org.skife.jdbi.v2.exceptions.UnableToObtainConnectionException: java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
DBI.withHandle() 및 DBI.withTransaction()의 전체적인 점은 콜백 메소드가 완료 될 때 연결을 닫고 리소스를 확보하기 때문에 혼란 스럽습니다.
나는 또한 동일한 문제가 발생했을 때마다 동일한 DBI 인스턴스를 반환하려고 시도했다.
내가 뭘 잘못하고 있니?
무엇을 업그레이드 했습니까? – hatellla
withHandle()이 존재한다는 것을 깨닫기 전에 내가 작성한 코드 중 일부 –