상세 컨텐츠

본문 제목

HP Netaction DB Connection Pool 설정법

프로그래밍/시스템, 서버구축

by 라제폰 2009. 1. 5. 12:51

본문

> {Connection Pool에 관한 질문(Mysql)}
> {손님(guest), hanglue@hanmail.net}
>
> 웹스피어에서 jsp, servlet 사용시 아래와 같이 ConnectionResource를 만들어 사용하고
> 있습니다.
> Netaction에서는 DB와 연동하려면 어떻게 해야하나요?
> 참고로 RadPak에서 DataSources를 등록한 상태입니다.
>
>  /*
>   * ConnectionResource V 1.0
>   * JDBC Connection Pool Adapter for IBM WebSphere V 3.5.x
>   * Author: WonYoung Lee, javaservice@hanmail.net, 011-898-7904
>   * Last Modified : 2000.09.30
>   * NOTICS: You can re-distribute or copy this source code freely,
>   *         but you can NOT remove the above subscriptions.
>  */
>
> import java.sql.*;
> import javax.sql.*;
> import javax.naming.*;
>
> public class ConnectionResource
> {
>     private static final String datasource = "jdbc/MISONGDB";
>        private static final String userid = "0000";
>        private static final String password = "000000";
>        private static DataSource ds = null;
>
>     private java.sql.Connection conn = null;
>
>     public ConnectionResource() throws Exception {
>         synchronized ( ConnectionResource.class ) {
>             if ( ds == null ) {
>                    java.util.Hashtable props = new java.util.Hashtable();
>                    props.put(Context.INITIAL_CONTEXT_FACTORY,
>                             "com.ibm.ejs.ns.jndi.CNInitialContextFactory");
>                    Context ctx = null;
>                    try {
>                      ctx = new InitialContext(props);
>                      ds = (DataSource)ctx.lookup(datasource);
>                    }
>                    finally {
>                      if ( ctx != null ) ctx.close();
>                    }
>              }
>            }
>            conn = ds.getConnection( userid, password );
>     }
>     public Connection getConnection() throws Exception {
>           if ( conn == null ) throw new Exception("Connection is NOT avaiable !!");
>            return conn;
>     }
>     public void release(){
>            // release conn into "Connection Pool"
>            if ( conn != null ) try { conn.close(); }catch(Exception e){}
>            conn = null;
>     }
> }


다음처럼 하십시오.(아래예제는 오라클을 기준으로 되어 있으니 약간 수정하셔서
사용하십시오)

connector-service-config.xml 화일에 datasource 설정

예:
<datasource>
    <min-pool-size>3</min-pool-size>
    <max-pool-size>10</max-pool-size>
    <datasource-type>hp-jdbc-tx</datasource-type>
    <datasource-name>nicsdb</datasource-name>
    <driver>oracle.jdbc.driver.OracleDriver</driver>
    <connection-url>jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:ORA805</connection-url>
    <advertised-name>jdbc/nicsdb</advertised-name>
    <container-managed-security>
         <force-container-managed>true</force-container-managed>
         <username>scott</username>
         <password>tiger</password>
    </container-managed-security>
</datasource>

이 리소스를 사용할 application의 war 화일이 WEB-INF 디렉토의 web.xml 화일에
리소스 정의

  <resource-ref>
    <res-ref-name>jdbc/nicsdb</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>

하시고

JSP/Servlet에서  JNDI LookUp하셔서 사용하시면 됩니다.

   ds = (DataSource)ctx.lookup("java:comp/env/jdbc/nicsdb");

hp-as와 jsp/servlet이 한 jvm에 있으면 initialcontext에 별도로 property를
설정하지 않고도 jndi lookup을 이용하실 수 있습니다.

클라이언트를 별도의 jvm에 올리실 계획이십니까? 그렇다면 property 설정부분에
대한 자료를 참고하셔야 합니다. 이 문서는 hp-as 설치 디렉토리속의 docs의
devguide를 참고하십시오.

감사합니다.


관련글 더보기