2011년 01월 24일
JEUS - DB Connection Pool 과 JDBC
원문 : http://blog.naver.com/nanandayo/60101143688 의 글이다.
JEUS에서 MSSQL을 사용 중인데, Oracle 설정 내용이긴 하나, COnnection 연결이 불량한 지금 이 내용을 참고하고자 발췌했다.
JEUS - DB Connection Pool 과 JDBC
--------------------------------------------------------------------------------------------------
제목 : JEUS - DB Connection Pool 과 JDBC
참고자료 : http://technet.tmaxsoft.com
작성자 : 윤영욱
작성일 : 2008.8.26
--------------------------------------------------------------------------------------------------
1. JEUS JDBC 의 개요
JDBC(Java Database Connectivity)는 Java 어플리케이션(Application)이 관계형 DB 에 접속하기 위한 Java 표준 API 이다.
JEUS 는 JDBC 3.0API 를 지원하며, JEUS 가 모든 JDBC 의 기능들을 제공하기 위해서는 확실한 구성이 필수적으로 요구된다.
최적화된 JDBC 기능을 사용하기 위해 본 매뉴얼을 따라 알맞은 구성을 해야 한다.
1) 지원되는 JDBC 드라이버들
JEUS 는 JDBC 인증을 받은 드라이버들을 지원한다.
http://industry.java.sun.com/products/jdbc/drives 에서 인증된 드라이버들을 찾을 수 있다.
환경구성은 서로 다르며 이는 각 드라이버 설정을 위해 다른 속성들을 요구하기 때문이다.
2) Web Container 의 Connection Pooling
JEUS Web Container 는 그 자신을 위한 connection pooling 을 제공한다.
3) JEUS Connection Pooling
Connection Pooling 은 database connection 캐시를 위한 하나의 프레임워크(Framework)이다.
Connection pool 이 시작될 때 특정한 수의 물리적 connection을 만들며 이는 어플리케이션 실행 시간에 connection 생성을
위한 오버헤드 (overhead)를 감소시킨다.
4) Pooling 구조
아래의 [그림 21] 은 JEUS JDBC Connection Pooling 의 전체적인 구조를 보여 준다.
5) Connection Pool 의 이점
Connection Pool 사용의 이점들은 아래의 두 가지로 요약할 수 있다.
- 보다 높은 성능
DB Connection 은 처리과정이 느리다.
Connection Pool 안에서의 모든 실제 커넥션들은 사용시에 만들어져 어플리케이션을 위한 준비를 한다.
Connection 을 더 이상 사용하지 않을 때에는 그것을 Pool 에 반환시켜서 connection 중단의 오버헤드를 감소시킬 수 있다.
- 연결 관리
이것은 connection pool 과 함께 동시 connection 들의 수를 제어할 수있다.
동시 connection 들의 최대 수를 구성함으로써 DB 의 동시connection 을 제한하는 작업을 효율적으로 할 수 있다.
6) DataSource
하나의 javax.sql.DataSource 는 어플리케이션과 connection pool 사이의 인터페이스이다.
javax.sql.DataSource 객체(object)는 DB Connection 들의 factory 로서 고려되어 질 수 있으며 그리고 이것은
java.sql.DriverManager 이상의 많은 이점을 제공한다.
7) DataSource 사용의 이점
1. No hard coding :
javax.sql.DataSourc 를 가졌다면 어플리케이션에서 driver 정보의 hard code 가 필요 없을 것이다.
대신에 JEUS 에서는 JDBC 드라이버 구성은 JEUSMain.xml 에 들어가 있다.
2. Connection Pool :
connection pool 은 성능과 관리면에서 많은 이점을 가져다 준다.
javax.sql.DataSource 은 하나의 connection pool 의 구성에서 중요 역할을 수행한다.
3. 분산 트랜잭션(Distributed Transaction) :
분산 트랜잭션을 가진 어플리케이션의 구현을 위해 XADataSource 의 설정이 필수적이다.
8) DataSource 타입들(DataSource Types)
• DataSource: 사용자들을 위해 Connection 을 반환한다.
• ConnectionPoolDataSource: Connection Pool 로부터 사용자들을 위해 Connection 을 반환한다.
• XADataSource: XA 연결 Pool 로부터 사용자들을 위해 분산/전역 Transaction 역할을 하는 Connection 을 반환한다.
• LocalXADataSource: XA 연결 Pool 로부터 사용자들을 위해 지역 Transaction 역할을 하는 connection 을 반환한다.
(일명 지역 XA DataSource)
2. JDBC DataSource 구성
JEUS 에서 JDBC 드라이버 구성을 시도할 때 JEUS_HOME\lib\datasource\ 디렉토리 안에 JDBC 드라이버 클래스
라이브러리가 있는 지 먼저 확인한 후 다음 절과 같이 JEUSMain.xml 을 구성하면 된다.
1) JEUSMain.xml 기본구성
JEUSMain.xml 에 DataSource 를 설정 할 수 있다.
Javax.sql.DataSource 의 속성들은 각 드라이버별로 다르기 때문에 사용하기 원하는 드라이버의 독점적특성을 파악하고
그 특성에 맞게 설정을 해야 한다.
아래의 XML element 들은 <resource><data-source><database>XML element 의 하위 element 로서 이용할 수 있다.
• Vendor:
DB 벤더의 이름 (“oracle”, “jeus_mssql”, “db2”, “sybase”, “inet”, “others”).
• Export name:
javax.sql.DataSource 객체하의 JNDI export 이름.
• Data source class name:
JDBC 드라이버의 클래스 이름.
• Data source type:
“DataSource”, “ConnectionPoolDataSource”, “XADataSource”, “LocalXADataSource”.
• Database name:
Database 의 이름.
• Data source name:
일반적으로 이것은 data source class name 과 동일.
• Service name:
Oracle DB 의 SID(inet JDBC 드라이버 사용시).
• Description:
DataSource 를 위해 설명하는 텍스트.
• Network protocol:
Database Connection 을 할 때 사용되는 프로토콜
(예를 들면 Sybase 의 "Tds").
• Password:
사용자의 암호.
• Encryption:
만약 "true"로 설정되었다면 password 는 Base64 로 암호화되어 있을 것이다.
그렇지않다면 test 기반의 password 일 것이다.
• Port number:
Database 리스너의 포트번호.
• Server name:
Database 가 운용중인 서버의 이름이나 IP 주소.
• User:
사용자 이름.
• Driver type:
Oracle JDBC 드라이버의 타입(예를 들면 thin,oci). 예제 (Oracle):
---------------------<<JEUSMain.xml>>-----------------------------------------------------
<jeus-system>
. . .
<resource>
<data-source>
<database>
<vendor>oracle</vendor>
<export-name>datasource1</export-name>
<data-source-class-name>oracle.jdbc.pool.OracleDataSource</data-source-class-name>
<data-source-type>DataSource</data-source-type>
<database-name>MYDB</database-name>
<data-source-name>oracle.jdbc.pool.OracleDataSource</data-source-name>
<service-name>oradb1</service-name>
<description>This is the DataSource setting for all transactions </description>
<network-protocol/> <!--Not used with Oracle-->
<password>tiger</password>
<encryption>false</encryption>
<port-number>1521</port-number>
<server-name>192.168.1.2</server-name>
<user>scott</user>
<driver-type>thin</driver-type>
. . . <!-- See later sub-section -->
</database>
. . .
</data-source>
. . .
</resource>
</jeus-system>
---------------------<<JEUSMain.xml>>-----------------------------------------------------
참고: <database>element 들은 <data-source>element 아래에 추가된다.
이후 생략 - (용량때문) - http://blog.naver.com/nanandayo/60101143688
# by | 2011/01/24 18:01 | 수첩 | 트랙백(1) | 덧글(0)
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
제목 : uk replica watches for sale
Nike's successful secret At th copy rolex watches uk e moment, plac faux cartier tank watch e world first (according to brand value) the sports brand is Nike. But also from the competitor like forest's sports brand camp, Nike end up being pupi che......more