More

톰캣 8.5 jdbc Connection Pool 속성 설정

톰캣 8.5 커넥션 풀 속성 설정

톰캣 8.5에서 Apache-Commons-DBCP 대신 tomcat-jdbc-pool을 사용 할 수 있는데 설정이 훨씬 간단하게 구현 가능하게 바뀌었습니다. 기존 commons-dbcp와 설정 속성이 거의 비슷하면서 약간 달라졌기 때문에 tomcat-jdbc-pool을 사용하면 변경해줘야 할 속성들이 좀 있습니다.

context.xml-설정화면

톰캣 context.xml 설정화면



먼저 톰캣 context.xml 파일에서 factory, type 을 변경해줘야 합니다.
  • factory = org.apache.tomcat.jdbc.pool.DataSourceFactory
  • type = javax.sql.DataSource


이 외에 tomcat-jdbc-pool 속성을 설정하는데 이전이랑 좀 바뀌었네요. maxTotal 대신 maxActive를 사용하면 되고 세부 속성도 여러가지 설정이 많이 생겼습니다.

context.xml-설정화면

tomcat-jdbc-pool 설정


속성

설명

defaultAutoCommit

(boolean) 이 풀에서 만든 연결의 기본 자동 커밋 상태입니다설정하지 않으면 기본값은 JDBC 드라이버 기본값입니다. (설정하지 않으면 setAutoCommit메소드가 호출되지 않습니다.)

defaultReadOnly

(boolean) 이 풀에서 만든 연결의 기본 읽기 전용 상태입니다설정하지 않으면 setReadOnly메서드가 호출되지 않습니다. (일부 드라이버는 읽기 전용 모드를 지원하지 않습니다. : Informix)

defaultTransactionIsolation

(String) 이 풀에서 만든 연결의 기본 TransactionIsolation 상태입니다다음 중 하나: (javadoc 참조)

  • NONE
  • READ_COMMITTED
  • READ_UNCOMMITTED
  • REPEATABLE_READ
  • SERIALIZABLE

설정하지 않으면 메서드가 호출되지 않고 기본적으로 JDBC 드라이버로 설정됩니다.

defaultCatalog

(String) 이 풀에서 만든 연결의 기본 카탈로그입니다.

driverClassName

(String) 사용할 JDBC 드라이버의 정규화된 Java 클래스 이름입니다드라이버는 tomcat-jdbc.jar와 동일한 클래스로더에서 액세스할 수 있어야 합니다.

username

(String) 연결을 설정하기 위해 JDBC 드라이버에 전달할 연결 사용자 이름입니다기본적으로 메서드 DataSource.getConnection(username,password) 는 메서드에 전달된 자격 증명을 사용하지 않지만 여기에서 구성된 자격 증명을 사용합니다자세한 내용은 alternateUsernameAllowed 속성을 참조하십시오.

password

(String) 연결을 설정하기 위해 JDBC 드라이버에 전달할 연결 암호입니다기본적으로 메서드 DataSource.getConnection(username,password) 는 메서드에 전달된 자격 증명을 사용하지 않지만 여기에서 구성된 자격 증명을 사용합니다자세한 내용은 alternateUsernameAllowed 속성을 참조하십시오.

maxActive

(int) 이 풀에서 동시에 할당할 수 있는 최대 활성 연결 수입니다기본값은100

maxIdle

(int) 풀에 항상 유지되어야 하는 최대 연결 수입니다기본값은 maxActive다음과 같습니다. 100 유휴 연결은 주기적으로 확인되고(활성화된 경우) 더 오랫동안 유휴 상태였던 연결은 minEvictableIdleTimeMillis 해제됩니다. (또한 참조 testWhileIdle)

minIdle

(int) 항상 풀에 유지되어야 하는 설정된 연결의 최소 수입니다유효성 검사 쿼리가 실패하면 연결 풀이 이 숫자 아래로 줄어들 수 있습니다기본값은 다음에서 파생됩니다 initialSize( 10참조 testWhileIdle) .

initialSize

(int) 풀이 시작될 때 생성되는 초기 연결 수입니다기본값은10

maxWait

(int) 예외를 throw하기 전에 연결이 반환될 때까지 풀이 대기하는 최대 밀리초 수(사용 가능한 연결이 없을 때). 기본값은 30000(30)입니다.

testOnBorrow

(boolean) 풀에서 차용하기 전에 개체의 유효성을 검사할지 여부를 나타냅니다개체가 유효성 검사에 실패하면 풀에서 삭제되고 다른 개체를 빌려오려고 시도합니다보다 효율적인 유효성 검사를 수행하려면 을 참조하십시오 validationInterval. 기본값은false

testOnConnect

(boolean) 연결이 처음 생성될 때 개체의 유효성을 검사할지 여부를 나타냅니다개체가 유효성 검사에 실패하면 throw SQLException됩니다기본값은false

testOnReturn

(boolean) 개체가 풀로 반환되기 전에 유효성을 검사할지 여부를 나타냅니다기본값은 false입니다.

testWhileIdle

(boolean) 유휴 개체 축출자(있는 경우)에서 개체의 유효성을 검사할지 여부를 나타냅니다개체의 유효성 검사에 실패하면 풀에서 삭제됩니다기본값 false은 풀 클리너/테스트 스레드가 실행되도록 하려면 이 속성을 설정해야 합니다( 참조 timeBetweenEvictionRunsMillis).

validationQuery

(String) 호출자에게 연결을 반환하기 전에 이 풀의 연결을 확인하는 데 사용할 SQL 쿼리입니다지정된 경우 이 쿼리는 데이터를 반환할 필요가 없으며 SQLException. 기본값은 null입니다지정하지 않으면 연결은 isValid() 메서드에 의해 확인됩니다예제 값은 SELECT 1(mysql), select 1 from dual(oracle), SELECT 1(MS Sql Server)입니다.

validationQueryTimeout

(int) 연결 유효성 검사 쿼리가 실패하기 전의 시간 제한()입니다. java.sql.Statement.setQueryTimeout(seconds)이것은 를 실행하는 명령문을 호출하여 작동 합니다 validationQuery. 풀 자체는 쿼리를 시간 초과하지 않으며 쿼리 시간 초과를 적용하는 것은 여전히 ​​JDBC 드라이버에 달려 있습니다. 0보다 작거나 같은 값은 이 기능을 비활성화합니다기본값은 -1입니다.

validatorClassName

(String) org.apache.tomcat.jdbc.pool.Validator인터페이스를 구현하고 인수 없는 생성자를 제공하는 클래스의 이름입니다(암시적일 수 있음). 지정된 경우 클래스는 유효성 검사 쿼리 대신 연결 유효성 검사에 사용되는 유효성 검사기 인스턴스를 만드는 데 사용됩니다기본값은 null입니다예제 값은 com.mycompany.project.SimpleValidator입니다.

timeBetweenEvictionRunsMillis

(int) 유휴 연결 유효성 검사/청소기 스레드 실행 사이의 휴면 시간(밀리초)입니다이 값은 1초 미만으로 설정하면 안 됩니다유휴, 중단된 연결을 확인하는 빈도와 유휴 연결의 유효성을 검사하는 빈도를 나타냅니다기본값은 5000(5)입니다.

numTestsPerEvictionRun

(int) tomcat-jdbc-pool에서 사용되지 않는 속성입니다.

minEvictableIdleTimeMillis

(int) 개체가 제거되기 전에 풀에서 유휴 상태로 있을 수 있는 최소 시간입니다기본값은 60000(60)입니다.

accessToUnderlyingConnectionAllowed

(boolean) 속성이 사용되지 않습니다. unwrap풀링된 연결 을 호출하여 액세스할 수 있습니다 . javax.sql.DataSource인터페이스를 보거나 리플렉션을 통해 호출 하거나 getConnection객체를 다음과 같이 캐스트합니다.javax.sql.PooledConnection

removeAbandoned

(boolean) () 초과하는 경우 중단된 연결을 제거하는 플래그 removeAbandonedTimeout입니다. true removeAbandonedTimeout설정하면 true연결을 끊는 데 실패한 응용 프로그램에서 db 연결을 복구할 수 있습니다참조 logAbandoned 기본값은 false입니다.

removeAbandonedTimeout

(int) 중단된(사용 중인) 연결을 제거하기 전의 시간 초과()입니다기본값은 60(60)입니다이 값은 애플리케이션에서 가질 수 있는 가장 오래 실행되는 쿼리로 설정되어야 합니다.

logAbandoned

(boolean) 연결을 포기한 애플리케이션 코드에 대한 스택 추적을 기록하는 플래그입니다중단된 연결을 로깅하면 스택 추적을 생성해야 하므로 연결 빌릴 때마다 오버헤드가 추가됩니다기본값은 false입니다.

connectionProperties

(String) 새 연결을 설정할 때 JDBC 드라이버로 전송되는 연결 속성입니다. String 형식은 [propertyName=property;]*여야 합니다. 참고 - "user" "password" 속성은 명시적으로 전달되므로 여기에 포함할 필요가 없습니다기본값은 null입니다.

poolPreparedStatements

(boolean) 속성이 사용되지 않습니다.

maxOpenPreparedStatements

(int) 속성이 사용되지 않습니다.