본문 바로가기
jsp

커넥션 풀(Connection Pool)

by 신방동불주먹 2022. 11. 25.

데이터베이스로의 요청이 필요할 때 연결을 재사용 할 수 있도록 관리되는 데이터베이스 연결 캐시

Connection 객체를 미리 생성해 Pool 에 넣어놓고 요청이 있을 때 이미 생성된 Connection 객체를 가져다 사용하고 사용이 완료된 객체는 연결을 해결하는 것이 아니라 풀에 반납하여 필요할 때 재사용할 수 있도록 함

 

 

 

<JNDI (Java Naming and Directory Interface)>

 

  • JSP 프로그램시 WAS가 제공하는 서비스
  • 자바 소프트웨어에서 객체나 데이터의 전체 경로를 몰라도 이름만으로 찾아 쓸 수 있는 디렉터리 서비스

 

WAS의 JNDI를 통한 커넥션 풀 사용 절차

 

1. WAS(톰캣) 시작 시 sever.xml 과 context.xml에 설정한 대로 커넥션 풀 생성

2. JSP 코드에서 JNDI 서버로부터 데이터 소스 객체 얻어옴

3. 데이터 소스로 부터 커넥션 객체 가져옴

4. DB작업 수행

5. 작업 종료 후 커넥션 객체 반환

 

 

 

 

<xml 설정>

 

1. server.xml 수정

톰캣에서 필요한 정보를 정의해둔 파일

 

파일 경로 

C:\work\jspworkspace\apache-tomcat-9.0.69\conf

 

내용 추가 

xe -> orcl 로 수정

 

  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
    
<Resource auth="Container"
              driverClassName="oracle.jdbc.OracleDriver"
              type="javax.sql.DataSource" 
              initialSize="0"
              minIdle="5"
              maxTotal="20"
              maxIdle="20"
              maxWaitMillis="5000"
              url="jdbc:oracle:thin:@localhost:1521:orcl"
              name="dbcp_myoracle"
              username="musthave"
              password="1234" />
  </GlobalNamingResources>

 

 

 

2. context.xml 수정

최하단 </context> 바로 위에 

 

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

 

추가

 

 

 

server.xml 과 동일한name속성을 넣어서 server.xml에서 불러올 수 있게 설정 

톰캣서버 삭제후 재연결

포트번호 다시 8081로 수정

 

 

 

 

 

<데이터소스 객체>

 

기본생성자)

1. 커넥션 풀(DataSource) 열기

 

public DBConnPool{
	try{
    	Context initCtx = new InitialContext();
        Context ctx = (Context)initCtx.lookup("java:/comp/env")'
        DataSource source = (DataSource)ctx.lookup("dbcp_myoracle");
  • Context : JNDI 에서 이름 과 실제 객체를 연결해주는 개념 
  • InitialContext 객체 생성 : 네이밍 서비스를 이용하기 위한 시작점. lookup()메서드로 원하는 객체를 찾을 수 있다
  • "java:comp/env"  : 현재 웹 어플리케이션의 루트 디렉토리
  • "dbcp_myoracle" : 데이터 소스(커넥션 풀), context.xml파일에 추가한 <ResourceLink>의 name 속성

 

 

 

2. 연결

 

con = source.getConnecion();

 

3. 연결해제(반납)

 

con.close();

 

'jsp' 카테고리의 다른 글

session  (0) 2022.11.28
쿼리  (0) 2022.11.25
ojdbc6.jar  (0) 2022.11.25
메서드  (0) 2022.11.24
cookie  (0) 2022.11.24