본문 바로가기
SPRING

[SPRING] Tomcat JNDI 설정

by 김뚱 2019. 6. 16.

장점

- 하나의 Tomcat 안에 여러 Application이 있을 경우, 하나의 DataSource를 공유할 수 있다.

- WAS에 설정을 함으로써 관리자가 관리하는데 용이하다.

 

Tomcat 설정 (PostgreSQL 기준)

 

01. Server.xml

<GlobalNamingResources>

    <Resource
        name="jdbc/TestDB"
        auth="Container"
        type="javax.sql.DataSource"
        factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"     
        driverClassName="org.postgresql.Driver"
        url="jdbc:postgresql://localhost:5432/dbtest"
        username="testuser" 
        password="1234"  
        maxTotal="30"  
        maxIdle="30"
        maxWaitMillis="3000"              
        minIdle="10"
        testWhileIdle="true"    
        validationQuery="select 1"
        closeMethod="close" />
    
</GlobalNamingResources>

 

02. Context.xml

<context>
    <ResourceLink name="jdbc/TestDB" global="jdbc/TestDB" type="javax.sql.DataSource" />
</context>

 

03. web.xml

<resource-ref>
    <description></description>
    <res-ref-name>jdbc/TestDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

 

Resource

- name : JNDI 이름. Context의 lookup()을 사용하여 자원을 찾을 때 사용.

- auth : resource manager 에 sign on 하는 주체로 Container (container-managed 일 경우) 혹은 Application (application-managed 일 경우)

- type : Resource의 형태를 지정. (패키지 이름 포함한 클래스 이름)

- driverClassName : JDBC 드라이버 클래스 지정 (패키지 이름 포함)

- url : DB connection URL

- username : DB접속 계정

- password : DB접속 암호

- maxActive : DataSource로 부터 꺼낼 수 있는 connection 최대 수. (기본값 8)

- maxIdle : DataSource에서 Connection pool 유지될 수 있는 사용하지 않는(대기) connection 최대 개수. 최대 개수 초과 시 반납되는 connection은 닫힘. (기본갑 8)

- maxWait : 발급한 connection 개수가 최대값에 도달한 상태에서 다시 connection을 요청할 경우 준비하기 위한 최대 대기시간(milliseconds). 최대 대기시간이 지나도 반납되는 connection이 없으면 예외를 던진다. (기본값 -1, 커넥션 반납 무한대기)

- minIdle : maxActive 를 넘을 수 없으므로 때에 따라 idle connection 이 minIdle 보다 적을 수도 있고, -1 일 경우 무제한이며, default 는 0

- testWhileIdle : idle connection 대상으로 validationQuery를 수행하여 문제가 발생할 경우 pool 에서 제거한다. 그리고 그 주기는 timeBetweenEvictionRunsMillis인데 물론 validationQuery 가 우선한다.

- validationQuery : connection 유효성 체크 query 로 default 는 null 이다. 만일 MySQL/MariaDB/PPAS/PostgreSQL 에 적용하려면 select 1, Oracle 에 적용하려면 select 1 from dual 을 사용한다.

- closeMethod : Tomcat Server가 종료될 때, 자원 해제를 위해서 호출하는 메서드. (매개변수는 없어야 함.)

 

JNDI (Java Naming and Directory Interface API)

- Directory Service에서 제공하는 데이터 객체를 발견하고 참고(lookup) 하기 위한 JAVA API.

(외부객체를 가져오기위한기술)

- Application은 JNDI를 사용하여 Server의 Resource(다른 시스템과의 연결을 제공하는 객체)를 찾을 수 있다.

- Resource를 Server에 등록할 때 고유한 JNDI를 부여한다. 보통 사용자에게 친숙한 directory 경로 형태이며, 예를 들면 JDBC 자원에 대한 JNDI 이름은 "jdbc/testdb" 형식으로 지어진다.

- Tomcat와 같은 WAS를 보면 특정 폴더에 필요한 데이터 소스(라이브러리)를 사용하기위해 JNDI를 이용하여 가져온다.

 

 

Reference

https://all-record.tistory.com/104

 

JSP에서 DB연동 하기 - JNDI, DBCP(커넥션풀) 이용

<개발환경> Eclipse JSP Tomcat 8.0 Oracle 11g JNDI외 DBCP란? ■ JNDI(Java Naming and Directory Interface) 란? JNDI의 정의를 보면 디렉터리 서비스에서 제공하는 데이터 및 객체를 발견하고 참고(lookup)하..

all-record.tistory.com

https://sarc.io/index.php/tomcat/21-tomcat-datasource

 

Tomcat(톰캣)의 DataSource (JDBC Connection Pool) 설정

Technical Note 정보 appsroot 님이 작성하신 글입니다. 카테고리: [ Apache Tomcat ] 게시됨: 30 January 2014 작성됨: 30 January 2014 최종 변경: 10 September 2017 조회수: 17698  tomcat.apache.org의 공식 문서 중 JNDI 예제입니다. (2017년 9월, 재확인하였는데 동일합니다) ... ... 주요 항목에 대해서 설명해 보겠습니다. 우선 commons-dbcp에서

sarc.io

 

728x90
반응형

'SPRING' 카테고리의 다른 글

[SPRING] ResponseEntity  (1) 2019.07.05
[SPRING] RestTemplate  (0) 2019.07.04
[SPRING] Task Scheduler 설정 및 사용방법  (0) 2019.07.02
[SPRING] 파일업로드  (0) 2019.03.06

댓글