Web

Server, Connection Pool이란?

greenyellow-s 2024. 9. 10. 13:53
Connection Pool

 

서버에 미리 Connection을 설정해 놓는 것

 

데이터베이스와 연결된 커넥션을 미리 만들어서 풀(pool) 속에 저장해 두고 있다가 커넥션을 풀에서 가져다가 쓰고 다시 풀에 반환하는 기법을 말한다.

 

Connection의 내용이 바뀌면 서버만 수정해주면 된다.

 

Connection Pool은 은행금고와 비슷하다.

 

은행금고에서 돈을 찾기 위해서는 사용자는 은행이라는 곳을 통해 돈을 찾아낼 수 있다.

여기서 은행금고는 Connection Pool이며 그 사이를 연결해주는 것이 DataSource이다.

 

클라이언트 -- DataSource -- Connection Pool


장점

 

- 풀속에 미리 커넥션이 생성되어 있기 때문에 커넥션을 생성하는데 드는 연결 시간이 소비되지 않는다.

- 재사용하기 때문에 생성되는 커넥션 수는 많지 않다.

- 오라클 주소, 드라이버, ID, PW를 서버에 숨겨놓음으로 보안에 좋다.


만드는 방법

 

server.xml  파일에 server을 키면 생기는 <Context></Context>에 추가하면 된다.

 

** 자주 바꾸면 서버가 다운되기 때문에 연습으로 사용할거면 context.xml 파일을 따로 만들어서 연습해도 가능하다.

=> META-INF - context.xml(생성)

 

context.xml
<Context 
	docBase="projectJSP" 
	path="/projectJSP" 
	reloadable="true" 
	source="org.eclipse.jst.jee.server:projectJSP">
	
	<Resource 
		name="jdbc/oracle" //이름은 마음대로 지어도 된다.
		type="javax.sql.DataSource" //이걸 통해서 전달 하겠다.
		driverClassName="oracle.jdbc.driver.OracleDriver" //드라이브 주소
		url="jdbc:oracle:thin:@localhost:1521:xe" //url
		username="c##java" //사용자 계정
		password="1234" //계정 비밀번호
		maxActive="20"
		maxIdle="3"
		removeAbandoned="true"/>
		
</Context>

 

DAO

 

DAO에서 DataSource를 불러오려면  import를 해줘야한다.

import javax.sql.DataSource

private DataSource ds;

 

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;


public MemberDAO () {
	Context ctx;
	try {
		ctx = new InitialContext(); 
		ds = (DataSource) ctx.lookup("jdbc/oracle"); 
	} catch (NamingException e) {
	e.printStackTrace();
	}
}

 

ds = (DataSource) ctx.lookup("jdbc/oracle"); 
connection을 꺼내서 ds에 보낸다. (ds는 DataSource)


Tomcat의 경우만 오류가 난다.
Tomcat의 경우에만 java:comp/env/ -> 접두사가 필요하다.

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

 

DB 연결 불러오기
con = ds.getConnection();

'Web' 카테고리의 다른 글

WEB, MVC 란?  (2) 2024.10.16
Server, Session / Cookie 사용 방법  (0) 2024.09.10
Server, JSP란?  (0) 2024.09.10
Server, Servlet으로 DB에내용 저장/출력하기  (0) 2024.09.10
Server, Servlet이란?  (0) 2024.09.09