2014-03-26 4 views
1

유효하지 않은 호스트 이름 또는 사용자/암호로이 테스트를 실행하면 실패하기 전에 약 2 분간 기다립니다. 사용자/비밀번호가 잘못되거나 호스트 이름/포트가 정확하지 않은 경우 즉시 실패하는 것이 이상적입니다.데이터베이스 연결 데이터가 유효하지 않은 경우 히카리를 "빠 르게"구성하는 방법이 있습니까?

HikariConfig config = new HikariConfig(); 
    config.setMaximumPoolSize(1); 
    config.setDataSourceClassName("com.mysql.jdbc.jdbc2.optional.MysqlDataSource"); 
    config.addDataSourceProperty("serverName", "localhost"); 
    config.addDataSourceProperty("url", "jdbc:mysql://localhost:3306/project_one?useServerPrepStmts=true&autoReconnect=false"); 
    config.addDataSourceProperty("port", "3306"); 
    config.addDataSourceProperty("databaseName", "project_one"); 
    config.addDataSourceProperty("user", "root"); 
    config.addDataSourceProperty("password", ""); 
    config.addDataSourceProperty("autoReconnect", false); 

    HikariDataSource ds = new HikariDataSource(config); 
    Connection connection = ds.getConnection(); 

    Statement statement = connection.createStatement(); 
    statement.executeQuery("SELECT 1"); 
+0

fail-fast 옵션 (아래 참조)이 있지만 "얼마나 빠름"은 드라이버 설정에 따라 달라질 수 있습니다. 자세한 내용은 MySQL [properties] (http://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html)을 참조하십시오. 이 페이지에서 'timeout'을 검색하면 실패한 연결 시도를 탐지하는 데 HikariCP가 걸리는 시간에 영향을 줄 수있는 몇 가지 시간 제한이 있습니다. – brettw

답변

1

예 1.2.9에서는 fail-fast 옵션 (현재 릴리스는 1.3.3)을 도입했습니다. 구성 등록 정보는 initializationFailFast입니다. 이 값을 true로 설정하면 풀이 빨리 실패합니다. 로깅 프레임 워크 (log4j, slf4j 등)의 com.zaxxer.hikari에 대한 디버그 로깅을 사용하면 연결 실패가 발생한 이유에 대한 자세한 정보를 얻을 수 있습니다.

+0

고마워, 나는 그것을 밖으로 시도 할 것이다. 디버그가 켜지면 setMinimumPoolSize 값 (하나 더 생각해보십시오)마다 다음 메시지가 표시됩니다. "[main] ERROR com.zaxxer.hikari.HikariPool - 최대 연결 생성 재시도 횟수 초과" –

+0

조금 빨라지지만, 내 미니 풀 크기가 큰 숫자라면, 여전히 각각 한 번씩 시도 할 것입니다. 나는 그 주위에 어떤 방법이 있다고 생각하지 않는다. (그리고 우리에게는 큰 문제가 아니다.) –