본문 바로가기
Web Program/Java Lecture

[oc4j]Connection Pool 사용법

by 현이빈이 2008. 8. 13.
반응형
 Forever movieLove | 영화신랑
원문 http://blog.naver.com/moviel0ve/130002815830
<data-source
    class="com.evermind.sql.DriverManagerDataSource"
    name="OracleDS"
    location="jdbc/OracleCoreDS"
    xa-location="jdbc/xa/OracleXADS"
    ejb-location="jdbc/OracleDS"
    connection-driver="oracle.jdbc.driver.OracleDriver"
    username="scott"
    password="tiger"
    url="jdbc:oracle:thin:@krservers1:3333:ORA817"
    inactivity-timeout="3000"
    min-connections="10"
    max-connections="10"
    stmt-cache-size="5"
/>
위와 같이 data-sources.xml이 설정되어 있다고 가정하고 servlet에서 connection pool에서부터
connection을 가져오는 것은 아래와 같습니다.

javax.naming.InitialContext ctx = new javax.naming.InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("jdbc/OracleDS");
java.sql.Connection conn = ds.getConnection();
//사용
conn.close();

중요한 점은 jdbc/OracleDS는 ejb-location에 설정이 되어 있습니다. ejb-location에 설정이
되어 있는 location으로부터 datasource를 가져와야만 실제로 connection pooling이 됩니다.
물론 jdbc/OracleDS대신에 다른 것을 사용하여도 되고 만얒 web.xml에 resource reference가
설정이되어 있다면 lookup하실 때 lookup("java:comp/env/<<설정한 이름>>"); 과 같은
방법으로 사용하시면 됩니다.

stmt-cache-size는 connection pool에 있는 connection들이 내부적으로 jdbc statement를
cache하고 있는 사이즈 입니다. 만약 cache를 하고 있지 않는 다면 createStatement나
prepareStatement 문장이 들어올 때마다 새롭게 만들게 되죠. 이는 cursor에 대한
soft parsing과 관련이 있기 때문에 성능에 영향을 미치게 됩니다. 당연히 oc4j쪽에
메모리가 여유가 있다면 caching하는 것이 성능이 좋습니다.

출처  : Sangki's KMS

반응형