본문 바로가기

DATABASE

[DB & JSP] 각 Database 별 커넥션 풀 설정(계속 업데이트)

이클립스에서 각 DB별 커넥션 풀을 설정하는 방법. 현재는 MySQL과 Oracle 뿐이다.

우선
http://commons.apache.org/dbcp/download_dbcp.cgi
http://commons.apache.org/pool/download_pool.cgi 

에서 각 파일을 다운로드 한다.

아니면 첨부한 파일을 받아도 된다.(pool은 새 버전이 나왔네요. 제가 올려놓은건 1.5.4 버전 입니다.)

다운받은 파일을 [톰캣설치폴더(이하 %TOMCATHOME%)\lib\] 에 넣어둔다.


이후 이클립스에서 "Dynamic Web Project" 를 만들었다고 가정하자.
프로젝트 이름은 'myproject'

myproject의 WEB-INF 의  lib에도 동일한 파일을 넣어둔다.


◈MySQL 의 경우.
%TOMCATHOME%\lib

myproject의 WEB-INF 의  lib에 MySQL JDBC 드라이버 파일을 넣어준다.
ex> mysql-connector-java-5.0.7-bin.jar

myproject의 METE-INF에 context.xml 파일을 만든후 다음과 같이 작성한다.

<Context docBase="myproject(내가 만든 프로젝트 이름)"
    path="/myproject"
    reloadable="true">

  <Resource name="jdbc/mytest"  (프로젝트내 커넥션 이용시 사용할 이름)
    auth="Container"
    type="javax.sql.DataSource"
    driverClassName="com.mysql.jdbc.Driver"
    loginTimeout="10"
    maxWait="-1"                           (커넥션 반환 대기 시간)
    username="root"                       (디비 유저)
    password="1234"                       (디비 비번)
    testOnBorrow="true"                   (커넥션 가져올때 유효성 검사)
    url="jdbc:mysql://localhost:3306/mytest?autoReconnect=true" />

</Context>



◈Oracle 의 경우
%TOMCATHOME%\lib

myproject의 WEB-INF 의  lib에 오라클 JDBC 드라이버 파일을 넣어준다.
ex> ojdbc14.jar

myproject의 METE-INF에 context.xml 파일을 만든후 다음과 같이 작성한다.
 
<Context docBase="myproject(내가 만든 프로젝트 이름)"
    path="/myproject"
    reloadable="true">


<Resource name="jdbc/oratest"
   auth="Container"
   type="oracle.jdbc.pool.OracleDataSource"
   driverClassName="oracle.jdbc.driver.OracleDriver"
   factory="oracle.jdbc.pool.OracleDataSourceFactory"
   url="jdbc:oracle:thin:@localhost:1521:test"        (@데이터베이스 주소:포트:SID)
   user="root"                                                    (디비 유저)
   password="system"                                        (디비 비번)
   maxActive="50"                                              (최대 풀 커넥션 수 )
   maxIdle="20"                                                 
   maxWait="-1" />                                            (커넥션 반환 대기 시간)

</Context>



다른 방법으로 톰캣의 server.xml의
<GlobalNamingResources> 와 </GlobalNamingResources> 사이에 <resource>를
<host> 와 </host> 사이에 <context>를 삽입하고,
web.xml을 수정하는 방법이 있지만 추천하지 않는다.




→ 사용법 

DB커넥션을 하는 java파일에서.

 
<시작>
	private Connection getConnection() throws Exception {
	      Context initCtx = new InitialContext();
	      Context envCtx = (Context) initCtx.lookup("java:comp/env");
	      DataSource ds = (DataSource)envCtx.lookup("jdbc/mytest");//컨텍스트 name
	      return ds.getConnection();
	    }

        Connection conn = getConnection();
<끝>


등의 형식으로 커넥션을 사용하면 된다. 

'DATABASE' 카테고리의 다른 글

데드락  (0) 2018.12.22
DB MySQL을 중심으로(innoDB엔진)  (0) 2018.12.13