12.9. 데이터베이스 연결 유효성 검사

데이터베이스 유지 관리, 네트워크 문제 또는 기타 중단 이벤트로 인해 JBoss EAP가 데이터베이스에 대한 연결이 끊어질 수 있습니다. 이러한 상황에서 복구하려면 데이터 소스에 대한 데이터베이스 연결 유효성 검사를 활성화할 수 있습니다.

데이터베이스 연결 유효성 검사를 구성하려면 유효성 검사 타이밍 방법, 유효성 검사 수행 방법을 확인하는 유효성 검사 메커니즘 및 예외 정렬기를 지정하여 예외 정렬기를 지정합니다.

  1. 유효성 검사 타이밍 방법 중 하나를 선택합니다.

    validate-on-match

    validate-on-match 메서드를 true 로 설정하면 다음 단계에 지정된 검증 메커니즘을 사용하여 연결 풀에서 항목을 확인할 때마다 데이터베이스 연결이 검증됩니다.

    연결이 올바르지 않으면 로그에 경고가 작성되고 풀의 다음 연결이 검색됩니다. 이 프로세스는 유효한 연결을 찾을 때까지 계속됩니다. 풀의 모든 연결을 순환하지 않으려면 use-fast-fail 옵션을 사용할 수 있습니다. 풀에 유효한 연결이 없으면 새 연결이 생성됩니다. 연결 생성에 실패하면 요청하는 애플리케이션에 예외가 반환됩니다.

    background-validation

    background-validation 메서드를 true 로 설정하면 사용하기 전에 백그라운드 스레드에서 연결이 주기적으로 검증됩니다. 검증 빈도는 background-validation-millis 속성으로 지정합니다. background-validation-millis 의 기본값은 0 이며 이는 비활성화되어 있음을 의미합니다.

    background-validation-millis 속성 값을 결정할 때 다음을 고려하십시오.

    • 이 값은 idle-timeout-minutes 설정과 동일한 값으로 설정해서는 안 됩니다.
    • 값이 낮을수록 풀의 유효성을 검사하는 빈도가 많고 더 빨리 풀에서 유효하지 않은 연결이 제거됩니다.
    • 값이 작을수록 더 많은 데이터베이스 리소스가 필요합니다. 값이 클수록 커넥션 유효성 검사 횟수가 줄어들고 데이터베이스 리소스 사용이 줄어듭니다. 단절된 연결은 더 이상 탐지되지 않습니다.
    참고

    이러한 검증 방법은 다음 예제에서 시연한 것처럼 상호 배타적입니다.

    • validate-on-matchtrue 로 설정된 경우 background-validationfalse 로 설정해야 합니다.
    • background-validationtrue 로 설정된 경우 validate-on-matchfalse 로 설정해야 합니다.

    이러한 검증 방법에 대한 비교 매트릭스는 유효성 검사 타이밍 방법 비교를 참조하십시오.

  2. 유효성 검사 메커니즘 중 하나를 선택합니다.

    valid-connection-checker-class-name

    valid-connection-checker-class-name 을 사용하는 것이 좋습니다. 이는 사용 중인 특정 데이터베이스에 대한 연결을 확인하는 데 사용되는 연결 검사기 클래스를 지정합니다. JBoss EAP는 다음과 같은 연결 검사기를 제공합니다.

    • org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker
    • org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLValidConnectionChecker
    • org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLReplicationValidConnectionChecker
    • org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker
    • org.jboss.jca.adapters.jdbc.extensions.novendor.JDBC4ValidConnectionChecker
    • org.jboss.jca.adapters.jdbc.extensions.novendor.NullValidConnectionChecker
    • org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker
    • org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker
    • org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseValidConnectionChecker
    check-valid-connection-sql

    check-valid-connection-sql 을 사용하여 연결의 유효성을 검사하는 데 사용할 SQL 문을 제공합니다.

    다음은 Oracle 커넥션의 유효성을 검사하는 데 사용할 수 있는 SQL 문의 예입니다.

    select 1 from dual

    다음은 MySQL 또는 PostgreSQL 연결의 유효성을 검사하는 데 사용할 수 있는 SQL 문의의 예입니다.

    select 1
  3. 예외 분류기 클래스 이름을 설정합니다.

    연결이 트랜잭션에 참여하는 경우에도 예외가 치명적으로 표시되면 연결이 즉시 닫힙니다. 치명적인 연결 예외 후 올바르게 감지 및 정리하려면 exception sorter class 옵션을 사용합니다. 데이터 소스 유형에 적합한 JBoss EAP 예외 분류기를 선택합니다.

    • org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter
    • org.jboss.jca.adapters.jdbc.extensions.informix.InformixExceptionSorter
    • org.jboss.jca.adapters.jdbc.extensions.mssql.MSSQLExceptionSorter
    • org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter
    • org.jboss.jca.adapters.jdbc.extensions.novendor.NullExceptionSorter
    • org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter
    • org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter
    • org.jboss.jca.adapters.jdbc.extensions.sybase.SybaseExceptionSorter