JDBC2 표준 도입 추가 기능의 연결 풀링 기능API일명JDBC2.0 선택적 패키지(또는JDBC2.0 표준 확장). 이러한 기능은 이후 핵심에 포함되었습니다.JDBC 3 API.포스트그레SQL JDBC드라이버는 다음과 같은 기능을 지원합니다. 다음으로 컴파일되었습니다.JDK1.3.x 와 결합하여JDBC2.0 선택적 패키지(JDBC2), 아니면JDK1.4 이상 (JDBC3). 대부분의 응용 프로그램 서버에는 다음이 포함됩니다.JDBC2.0 Optional Package이지만 별도로 구매도 가능합니다. 일요일JDBC다운로드 사이트.
그JDBC API클라이언트와 서버 제공 연결 풀링을 위한 인터페이스입니다. 클라이언트 인터페이스는 다음과 같습니다.javax.sql.DataSource이것이 바로 애플리케이션 코드는 일반적으로 풀링된 데이터를 획득하는 데 사용됩니다. 데이터베이스 연결. 서버 인터페이스는 다음과 같습니다.javax.sql.ConnectionPoolDataSource이것이 바로 대부분의 애플리케이션 서버는포스트그레SQL JDBC운전사.
응용 프로그램 서버 환경에서 응용 프로그램 서버는 구성은 일반적으로 다음을 참조합니다.포스트그레SQL ConnectionPoolDataSource구현하는 동안 애플리케이션 구성 요소 코드는 일반적으로 다음을 획득합니다.메이저 토토 사이트소스구현 제공자: 애플리케이션 서버(다음이 아님)포스트그레SQL).
애플리케이션 서버가 없는 환경의 경우,포스트그레SQL2개 제공 구현메이저 토토 사이트소스이것은 응용 프로그램은 직접 사용할 수 있습니다. 하나의 구현이 수행됩니다. 다른 하나는 단순히 연결 풀링에 대한 액세스를 제공합니다. 다음을 통한 데이터베이스 연결메이저 토토 사이트소스풀링이 없는 인터페이스. 다시, 이러한 구현은 애플리케이션에서 사용되어서는 안 됩니다. 애플리케이션 서버가 그렇지 않은 경우를 제외하고는 서버 환경 지원하다ConnectionPoolDataSource인터페이스.
ConnectionPoolDataSource포스트그레SQL하나 포함
구현ConnectionPoolDataSourceforJDBC2 그리고 하나는JDBC3, 다음과 같이테이블
31-1.
표 31-1.ConnectionPoolDataSource구현
| JDBC | 구현 클래스 |
|---|---|
| 2 | org.postgresql.jdbc2.ional.ConnectionPool |
| 3 | org.postgresql.jdbc3.Jdbc3ConnectionPool |
두 구현 모두 동일한 구성 체계를 사용합니다.JDBC다음이 필요합니다.ConnectionPoolDataSource베
다음과 같이 JavaBean 속성을 통해 구성됩니다.표 31-2그러니까
이러한 각 속성에는 get 및 set 메서드가 있습니다.
표 31-2.ConnectionPoolDataSource구성
속성
| 속성 | 유형 | 설명 |
|---|---|---|
| 서버이름 | 문자열 | 포스트그레SQL메이저 토토 사이트베이스 서버 호스트 이름 |
| 메이저 토토 사이트베이스 이름 | 문자열 | 포스트그레SQL메이저 토토 사이트베이스 이름 |
| 포트번호 | int | TCP 포트포스트그레SQL메이저 토토 사이트베이스 서버는 수신 중(또는 기본 포트를 사용하려면 0) |
| 사용자 | 문자열 | 데이터베이스 연결에 사용되는 사용자 |
| 비밀번호 | 문자열 | 데이터베이스 연결에 사용되는 비밀번호 |
| defaultAutoCommit | 부울 | 연결에서 자동 커밋을 활성화해야 하는지 여부 또는 호출자에게 제공되면 비활성화됩니다. 는 기본값은거짓, 비활성화하려면 자동 커밋. |
많은 응용 프로그램 서버는 속성 스타일 구문을 사용하여 다음을 수행합니다. 이러한 속성을 구성하면 입력하는 것이 이상하지 않습니다. 속성을 텍스트 블록으로 표시합니다. 애플리케이션 서버인 경우 모든 속성을 입력할 수 있는 단일 영역을 제공합니다. 다음과 같이 나열됩니다:
서버이름=로컬호스트 메이저 토토 사이트베이스 이름=테스트 사용자=테스트사용자 비밀번호=테스트비밀번호
또는 세미콜론이 대신 구분 기호로 사용되는 경우 개행 문자는 다음과 같습니다:
서버 이름=localhost;메이저 토토 사이트베이스 이름=테스트;사용자=테스트사용자;비밀번호=테스트비밀번호
메이저 토토 사이트소스PostgreSQL2개 포함 구현메이저 토토 사이트소스forJDBC2 및 2개 forJDBC3, 다음과 같이표 31-3. 는 풀링 구현은 다음과 같은 경우 실제로 연결을 닫지 않습니다. 클라이언트는닫기방법이지만 대신 연결을 사용 가능한 풀로 반환합니다. 다른 클라이언트가 사용할 수 있는 연결입니다. 이렇게 하면 오버헤드가 방지됩니다. 연결을 반복적으로 열고 닫는 것이 가능하며 다수의 클라이언트가 소수의 메이저 토토 사이트베이스를 공유 연결.
여기에 제공된 풀링 데이터 소스 구현은 다음이 아닙니다. 세계에서 가장 기능이 풍부한 것. 무엇보다도, 풀 자체가 닫힐 때까지 연결은 닫히지 않습니다. 풀을 축소할 방법이 없습니다. 또한, 연결 기본 구성된 사용자 이외의 사용자에 대해 요청된 사항은 다음과 같습니다. 풀링되지 않았습니다. 많은 애플리케이션 서버는 보다 향상된 기능을 제공합니다. 풀링 기능을 사용하고ConnectionPoolDataSource구현 대신.
표 31-3.메이저 토토 사이트소스구현
| JDBC | 풀링 | 구현 클래스 |
|---|---|---|
| 2 | 아니요 | org.postgresql.jdbc2.ional.SimpleDataSource |
| 2 | 예 | org.postgresql.jdbc2.ional.PoolingDataSource |
| 3 | 아니요 | org.postgresql.jdbc3.Jdbc3SimpleDataSource |
| 3 | 예 | org.postgresql.jdbc3.Jdbc3PoolingDataSource |
모든 구현은 동일한 구성 체계를 사용합니다.JDBC다음이 필요합니다.메이저 토토 사이트소스JavaBean을 통해 구성됨 속성, 다음에 표시됨표 31-4그러니까 이러한 각 속성에는 get 및 set 메서드가 있습니다.
표 31-4.메이저 토토 사이트소스구성 속성
| 속성 | 유형 | 설명 |
|---|---|---|
| 서버이름 | 문자열 | PostgreSQL메이저 토토 사이트베이스 서버 호스트 이름 |
| 메이저 토토 사이트베이스 이름 | 문자열 | PostgreSQL메이저 토토 사이트베이스 이름 |
| 포트번호 | int | TCP 포트는PostgreSQL메이저 토토 사이트베이스 서버는 수신 중(또는 기본 포트를 사용하려면 0) |
| 사용자 | 문자열 | 데이터베이스 연결에 사용되는 사용자 |
| 비밀번호 | 문자열 | 데이터베이스 연결에 사용되는 비밀번호 |
풀링 구현에는 몇 가지 추가 사항이 필요합니다. 구성 속성은 다음과 같습니다.표 31-5.
표 31-5. 추가 풀링메이저 토토 사이트소스구성 속성
| 재산 | 유형 | 설명 |
|---|---|---|
| 메이저 토토 사이트소스이름 | 문자열 | 모든 풀링메이저 토토 사이트소스고유한 이름이 있어야 합니다. |
| initialConnections | int | 생성될 메이저 토토 사이트베이스 연결 수 풀이 초기화될 때. |
| maxConnections | int | 다음에 열려 있는 데이터베이스 연결의 최대 수 허용합니다. 더 많은 연결이 요청되면 호출자는 연결이 반환될 때까지 정지됩니다. 수영장. |
예 31-9은 다음을 사용하는 일반적인 애플리케이션 코드의 예를 보여줍니다. 풀링메이저 토토 사이트소스.
예 31-9.메이저 토토 사이트소스코드 예
풀링 초기화 코드메이저 토토 사이트소스다음과 같을 수 있습니다:
Jdbc3PoolingDataSource 소스 = 새로운 Jdbc3PoolingDataSource();
source.setDataSourceName("데이터 소스");
source.setServerName("localhost");
source.setDatabaseName("테스트");
source.setUser("테스트사용자");
source.setPassword("테스트비밀번호");
source.setMaxConnections(10);
그러면 풀에서 연결을 사용하는 코드는 다음과 같습니다. 이렇게. 연결이 중요하다는 점에 유의하세요. 결국 문을 닫았습니다. 그렇지 않으면 수영장이 됩니다."누출"연결이 결국 잠길 것입니다 클라이언트는 모두 나가세요.
연결 con = null;
를 시도해보세요
con = source.getConnection();
// 연결 사용
잡기(SQLException e)
// 오류 로그
마지막으로
if (con != null)
시도 con.close(); 잡기(SQLException e)
모두ConnectionPoolDataSource그리고메이저 토토 사이트소스구현은 다음과 같습니다. 에 저장됨JNDI. 이 경우 비풀링 구현 중 새 인스턴스는 다음과 같습니다. 객체가 검색될 때마다 생성됨JNDI, 동일한 설정으로 저장된 인스턴스입니다. 풀링 구현의 경우 사용 가능한 한 동일한 인스턴스가 검색됩니다. (예: 다르지 않음JVM다음에서 풀 검색 중JNDI) 또는 동일한 새 인스턴스 다르게 생성된 설정입니다.
응용 프로그램 서버 환경에서는 일반적으로 애플리케이션 서버의메이저 토토 사이트소스인스턴스가 저장될 위치JNDI, 대신에포스트그레SQL ConnectionPoolDataSource구현.
응용 프로그램 환경에서 응용 프로그램은 다음을 저장할 수 있습니다.메이저 토토 사이트소스inJNDI그래서 그것은 만들 필요가 없습니다 에 대한 참조메이저 토토 사이트소스사용 가능 이를 사용해야 하는 모든 애플리케이션 구성 요소에 적용됩니다. 안 이에 대한 예는 다음과 같습니다.예 31-10.
예 31-10.메이저 토토 사이트소스 JNDI코드 예
풀링을 초기화하는 애플리케이션 코드메이저 토토 사이트소스다음에 추가하세요JNDI다음과 같이 보일 수 있습니다:
Jdbc3PoolingDataSource 소스 = 새로운 Jdbc3PoolingDataSource();
source.setDataSourceName("데이터 소스");
source.setServerName("localhost");
source.setDatabaseName("테스트");
source.setUser("테스트사용자");
source.setPassword("테스트비밀번호");
소스.setMaxConnections(10);
new InitialContext().rebind("DataSource", 소스);
그러면 풀에서 연결을 사용하는 코드는 다음과 같습니다. 이렇게:
연결 con = null;
를 시도해보세요
DataSource 소스 = (DataSource)new InitialContext().lookup("DataSource");
con = source.getConnection();
// 연결 사용
잡기(SQLException e)
// 오류 로그
잡기(NamingException e)
// JNDI에서 DataSource를 찾을 수 없습니다.
마지막으로
if (con != null)
시도 con.close(); 잡기(SQLException e)