커넥션풀 기초
1. 다운받기
cos-26Dec2008.zip 다운받기

1-2. 다운받기2
commons-dbcp-1.4-bin.zip
commons-fileupload-1.3.1-bin.zip
commons-io-2.4-bin.zip
commons-logging-1.2-bin.zip
commons-pool-1.6-bin.zip
위 파일들을 http://apache.org/ 에서 다운받자. 구글에서 apache라는 단어를 붙여 검색하면 더 쉽다.
2. 압축 풀고 jar 파일 빼내기
각 폴더에 압축을 풀고
commons-dbcp-1.4.jar
commons-fileupload-1.3.1.jar
commons-io-2.4.jar
commons-logging-1.2.jar
commons-pool-1.6.jar
cos
위의 jar파일을 빼내서 아래처럼 한 폴더에 모은다.

3. cos.jar

4. commons-dbcp-1.4.jar
commons-pool-1.6.jar
commons-dbcp-1.4.jar와 commons-pool-1.6.jar를 톰캣 폴더 안의 lib 폴더 속에 붙여넣는다.

5. 커넥션풀 설정(톰캣 설정)
server.xml을 수정하기 전 (1)새로운 다이나믹 웹 프로젝트를 만들고, (2)빈 jsp파일을 만들고, (3)빈 jsp를 실행해보자(Ctrl+F11)
톰캣에 jar파일이 반영되도록 한 번 서버를 돌려보는 것이다.
5-1. server.xml의 Context 수정
server.xml 을 누르고 Source를 눌러 수정한다.
<Context docBase=”DBCPProject” path=”/DBCPProject” reloadable=”true” source=”org.eclipse.jst.jee.server:DBCPProject”/>
을 아래와 같이 변경한다.
<Context docBase=”DBCPProject” path=”/DBCPProject” reloadable=”true” source=”org.eclipse.jst.jee.server:DBCPProject”>
<Resource
name=”jdbc/oracle”
type=”javax.sql.DataSource”
auth=”Container”
driverClassName=”oracle.jdbc.driver.OracleDriver”
url=”jdbc:oracle:thin:@localhost:1521:ORCL”
password=”tiger”
username=”scott”
maxActive=”10″
maxIdle=”5″
maxWait=”-1″
/>
</Context>
|
name=”jdbc/oracle” -> 이름임. 아무거나 써도됨. 마이디비, 라고 써도 됨. |
cf) 아래처럼 commons-dbcp-1.4.jar 안의 BasicDataSource 내부를 보면 name,type,auth,url,password … 등을 변수로 가지고 있음을 알 수 있다.

5-3. server.xml의 Connector 수정

6. 겟 커넥션(getConnection) 소스의 변화
public void getConnection(){
try{
Context init=new InitialContext();//탐색기를 연다
Context c=(Context)init.lookup(“java://comp/env”);//C드라이브에 접근
DataSource ds=(DataSource)c.lookup(“jdbc/oracle”);//그 안에서 파일 하나를 얻어온다.
conn=ds.getConnection();
}catch(Exception ex){System.out.println(ex.getMessage());}
}
7. JNDI의 이해

public void getConnection(){
try{
Context init=new InitialContext();//탐색기를 연다
Context c=(Context)init.lookup(“java://comp/env”);//C드라이브에 접근
DataSource ds=(DataSource)c.lookup(“jdbc/oracle”);//그 안에서 파일 하나를 얻어온다.
conn=ds.getConnection();
}catch(Exception ex){System.out.println(ex.getMessage());}
}
JNDI는 자바 네이밍 디렉토리 인터페이스(Java Naming and Directory Interface)의 약자이다. 저장되는 공간이 폴더 형태로 되어있고, 각 객체가 폴더 내에 저장된다. “저장된 개체의 주소값을 넘겨달라”가 룩업이다.
쉽게 생각하면 탐색기라고 할 수 있다. Context 새 개체를 만들고, comp/env에 접근한 뒤, 그 안에서 지정한 이름(jdbc/oracle)의 데이터 소스를 얻어온다. 그리고 나서 겟 커넥션을 하면 된다.
그 전에는 연결->사용->해제 였으나, 이제는 연결->사용-> “반환”으로 바뀐다.(커넥션풀)