-
1. 보통 웹 애플리케이션이 실행됨과 동시에 연동할 데이터베이스와의 연결을 미리 설정해두며 연결 상태를 유지함 (커넥션풀, ConnectionPool)
2. 즉,
- 애플리케이션 실행 시 미리 ConnectionPool 객체를 생성한 후 DB와 연결 맺음
- 애플리케이션은 DB 연동 작업 발생 시 이 ConnectionPool 객체를 이용하여 작업 수행
3. 일반적으로 ConnectionPool 객체를 구현할 때 Java SE에서 제공하는 javax.sql.DataSource 클래스를 이용하며, 톰캣이 만들어 놓은 ConnectionPool 객체에 접근할 때 JNDI를 사용함
4. 톰캣 내 context.xml 파일의 <Resource> 태그를 이용하여 톰캣 실행 시 연결할 DB 설정함
<Resource name="jdbc/oracle" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:XE" username="scott" password="tiger" maxActive="50" maxWait="-1" > </Resource>
● name="jdbc/oracle" // name의 jdbc/oracle 로 DataSource에 접근 (JNDI이름)
● driverClassName="oracle.jdbc.OracleDriver" // 연결할 데이터베이스 종류에 따른 드라이버 클래스 이름
● url="jdbc:oracle:thin:@localhost:1521:XE" // 접속할 데이터베이스 주소와 포트번호 및 SID
* 덧)
여기서 jdbc:oracle:thin:@localhost:1521:XE 이 부분이 가장 궁금했는데
- @localhost:1521:XE
=> 위에 적힌대로 DB주소:포트번호:SID 로 보면 됨 (SID는 오라클의 경우 tnsnames.ora에 SERVICE_NAME)
- jdbc:oracle:thin
=> 오라클의 드라이버 정보이며 자세한 것은 하단 출처의 'DB별 드라이버 정보' 에서 확인
=> 오라클 드라이버의 경우 thin과 oci 두 가지가 있으며 oci는 C/C++ 형태의 라이브러리, thin은 java 형태의 라이브러리이며 자세한 것은 하단 출처의 'oci, thin 드라이버 차이' 에서 확인
● maxActive="50" // 최대 active connection 갯수
● maxWait="-1" // connection pool이 비었을 경우 대기시간 (단위 1/1000초), 기본값 -1(무한대)
=> 자세한 것은 하단 출처의 'Resource 내 속성 의미' 에서 확인
출처:
DB별 드라이버 정보 => https://tibang.tistory.com/454
Resource 내 속성 의미 => https://soul0.tistory.com/219
oci, thin 드라이버 차이 => https://blog.naver.com/kletgdgo/90091963113
'IT > 정리' 카테고리의 다른 글
[인증] PKI (0) 2020.11.30 [Servlet] cannot be cast to javax.servlet.Servlet (0) 2020.04.22 웹 애플리케이션 모델 (0) 2020.04.21 [springBoot] 서버 템플릿 엔진과 머스테 (0) 2020.02.16 용어정리 (0) 2020.01.29