DBCP : Database Connection Pool
사용자가 DB에 접속이 몰리면 과부하 문제도 있고 연결 속도에 지장이 생길 수 있다
이를 해결하기 위해 미리 커넥션을 만들어 놓고 전달해주면 속도를 줄이며
최대 커넥션을 설정해 과부하를 막을 수 있도록 해준다
이를 커넥션 풀이라고 한다
[Connection Pool]
//미리 DB와 연결되어있는 Connection 객체를 일정 개수 이상 만들어 두고
//요청 시 만들어둔 Connection을 빌려주고
//요청 완료 시 다시 반환 받아오는 방법'
//항상 일정 개수 이상의 Connection 객체가 존재
//요청이 많을 경우 지정된 범위 내에서 추가적인 Connection 객체 생성할 수 있음
//Connection 개수에 제한이 있기 때문에 DB에 과도한 요청을 보내는 경우를 방지
이를 위해 이클립스에 미리 설정을 해놓는다
1. Server -> context.xml 에 세팅
<Resource
name = "jdbc/oracle"
auth = "Container"
type = "javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url = "jdbc:oracle:thin:@127.0.0.1:1521:xe"
username = "username "
password = "password !"
maxTotal="200"
maxIdle = "20"
maxWaitMillis = "-1"/>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
jdbc/oracle : NAME
DataSource : DriverManager의 업그레이드판
maxTotal : 최대 커넥션 개수
maxIdle : 평소에 생성되어있는 커넥션의 최대 개수
maxWaitMillis : 커넥션이 반환되는 최대 시간(-1이면 무제한)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2. web.xml 에 세팅 (생략가능인듯?)
<!-- DBCP 설정 자원 위치 -->
<resource-ref>
<description>Oracle Datasource</description>
<res-ref-name>jdbc/oracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
3. JDBC 연결시 Context 사용 (템플릿 사용)
// Servers에 존재하는 context.xml 파일을 찾는 작업
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
// java:comp/env 응용 프로그램 환경 항목
// context.xml 파일에서 name이 "jdbc/oracle"인 DataSource를 얻어옴
// DataSource : DriverManager를 대체하는 객체로
// Connection 생성, Connectoin pool을 구현하는 객체
DataSource ds = (DataSource)envContext.lookup("jdbc/oracle");
conn = ds.getConnection(); // DataSource에 의해 미리 만들어진 Connection 중 하나를 얻어옴.
conn.setAutoCommit(false);
//-----------------------------------------------------------
// JNDI(Java Naming and Directory Interface API)
/*디렉터리 서비스에 접근하는데 사용하는 API
어플리케이션은 JNDI를 사용하여 서버의 resource를 찾는다.
특히 JDBC resource를 data source라고 부른다.
Resource를 서버에 등록할 때 고유한 JNDI 이름을 붙이는데, JNDI 이름은 디렉터리 경로 형태를 가진다.
예를 들어 data source의 JNDI 이름은 'jdbc/mydb' 형식으로 짓는다.
서버에서 'jdbc/oracle'라는 DataSource를 찾으려면
'java:comp/env/jdbc/oracle'라는 JNDI 이름으로 찾아야 한다.
즉 lookup() 메소드에 'java:comp/env/jdbc/oracle'를 인자값으로 넘긴다.
//--------------------------------------------------------------
*/
'개발자로 업그레이드 되자 > Servlet, JSP' 카테고리의 다른 글
서블릿, JSP 정리 (6) 에러페이지로 연결하기 (0) | 2021.12.06 |
---|---|
서블릿, JSP 정리 (5) 로그인/ 로그아웃 / 암호화 (0) | 2021.12.03 |
서블릿, JSP 정리 (3) (0) | 2021.11.30 |
서블릿, JSP 정리 (2) (0) | 2021.11.30 |
서블릿, JSP 정리 (1) (0) | 2021.11.26 |