티스토리 뷰

Jsp&Servlet

Connection Pool 개념

살구르 2017. 1. 31. 15:31

-Connection pool

-Runtime(실행) 중에 클라이언트의 DB 요청에 따라 매번 드라이버를 로딩하고 DB 서버에 접속해서 Connection 하는 것은 매우 불안정적이다.

-따라서 런타임 전에(, 서버가 시작할 때) 드라이버를 로딩하고 DB 서버에 접속해서 Connection 들을 미리 여러 개 만들어 놓는다.

-이 때, 만들어 놓은 Connection을 모아 놓은 곳을 Connection pool 이라고 한다.


[펌]

http://soul0.tistory.com/286



즉, Connection Pool을 사용해서 DB와 연동해야 서버에 안정적이게 된다.

아래는 Connection Pool인 DataSource를 생성하는 과정을 보여준다.


1. WAS_HOME/conf/server.xml 에 다음과 같은 내용 추가 => 4개의 Connection이 서버에서 미리 생성하고 대기하도록 리소스 생성

<GlobalNamingResources>


    <Resource name="jdbc/myoracle"

               type="javax.sql.DataSource"

driverClassName="oracle.jdbc.driver.OracleDriver"

url="jdbc:oracle:thin:@127.0.0.1:1521:xe"

username="scott"

               password="tiger"

                  maxActive="4"

                    maxIdle="2"

                    maxWait="5000"/>

</GlobalNamingResources>


2. WAS_HOME/conf/context.xml 파일에 다음과 같은 내용을 추가 => 해당 서버에서 DataSource를 사용하겠다고 지정

<ResourceLink global="jdbc/myoracle" name="jdbc/myoracle" type="javax.sql.DataSource" />



3. WebContent/WEB-INF/web.xml 파일에 다음과 같은 내용을 추가 => web.xml 파일에 등록

<resource-ref>

<description>Oracle Datasource example</description>

<res-ref-name>jdbc/myoracle</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

4. JDBC Driver classpath 추가


//exam.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ page import="java.sql.*" %>

<%@ page import="javax.sql.*" %> <!-- DataSource -->

<%@ page import="javax.naming.*" %> <!-- JNDI 서버 -->


<%

// JNDI 서버

InitialContext ic = new InitialContext(); 

DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/myoracle");

Connection conn = ds.getConnection();

PreparedStatement pstmt = null;

ResultSet rs = null;

try {

pstmt = conn.prepareStatement("select * from test");

rs = pstmt.executeQuery();

while (rs.next()) {

out.print(rs.getString(1) + " " + rs.getString(1) + "<br>");

}

} catch (Exception e) {

System.out.println(e);

} finally {

if (rs != null)

rs.close();

if (pstmt != null)

pstmt.close();

if (conn != null)

conn.close(); // Connection Pool에 반납

}


%>


*톰캣의 경우 자바 리소스를 관리하는 가상의 폴더가 존재

java:comp/env/  

따라서, ic.lookup 시에 자바 리소스를 찾을 때 경로를 지정해주어야함

ic.lookup("java:comp/env/jdbc/myoracle");

([펌] http://egloos.zum.com/utils/v/3853335)


[펌] 참고 자료

http://idkbj.tistory.com/91




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함