티스토리 뷰
-Connection pool
-Runtime(실행) 중에 클라이언트의 DB 요청에 따라 매번 드라이버를 로딩하고 DB 서버에 접속해서 Connection 하는 것은 매우 불안정적이다.
-따라서 런타임 전에(즉, 서버가 시작할 때) 드라이버를 로딩하고 DB 서버에 접속해서 Connection 들을 미리 여러 개 만들어 놓는다.
-이 때, 만들어 놓은 Connection을 모아 놓은 곳을 Connection pool 이라고 한다.
[펌]
즉, 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)
[펌] 참고 자료
'Jsp&Servlet' 카테고리의 다른 글
jsp에서 자바 변수를 form 전송하기 (0) | 2017.02.01 |
---|---|
JSTL의 sql을 이용하여 dataSource를 더 간편하게 사용하기 (0) | 2017.01.31 |
JSTL (0) | 2017.01.31 |
이클립스 properties 플러그인 설치하기 (0) | 2017.01.31 |
표준 액션 태그 이외에 개발자의 커스텀 태그 만들기 (0) | 2017.01.31 |