이번 포스팅에서는 이클립스 환경에서 JNDI와 DBCP, DB 연동하는 방법에 대해 기술
# 방법
1. 사용자 요청 2. 요청은 Controller → Model로 전달 3. Model로 넘어간 요청은 JNDI에 등록된 Database 객체(Type:DataSource)를 검색 4. JNDI를 통해 찾은 객체로부터 커넥션을 획득 5. Database 작업이 끝난 뒤 커넥션 반납 |
# 구성
lib 폴더 – API 관련 jar 파일 설치 /WebContent/WEB-INF/lib : tomcat-dbcp.jar, ojdbc6.jar context.xml – DBCP 정보 설정 /Servers/context.xml web.xml – JNDI 리소스 사용 설정 /WebContent/WEB-INF/lib/web.xml |
# 태그 내용
- auth : 컨테이너를 자원 관리자로 기술 - name : JDBC이름, 변경 가능 - driverClassName : JDBC 드라이버 - type : 웹에서 이 리소스를 사용할 때 DataSource로 리턴됨 - url : jdbc:oracle:thin:@ip주소:포트번호:전역 데이터베이스 이름 - username : 접속계정 - password : 접속할 계정 비밀번호 - loginTimeout : 연결 끊어지는 시간 - maxActive : 최대 연결 가능한 Connection수 (기본 20개) - maxIdle : Connection pool 유지를 위해 최대 대기 connection 숫자 - maxWait : 사용 가능한 커넥션이 없을 때 커넥션 회수를 기다리는 시간 (1000 = 1초) - testOnBorrow : db에 test를 해볼 것인지 |
# context.xml에서 Resource 태그
예시)
<Resource
auth="Container"
driverClassName="oracle.jdbc.OracleDriver"
maxidle="4"
maxtotal="10"
name="jdbc/이름"
password="root"
type="javax.sql.DataSource"
url="jdbc:oracle:thin:@localhost:1521:orcl"
username="lim“
/>
그 뒤, web.xml 파일에서 소스를 추가
<resource-ref>
<description>Connection</description>
<res-ref-name>jdbc/OracleDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
그 후, jsp에서 접속을 확인
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page import="java.sql.*"%>
<%
//내 db 접속에 사용할 conn 변수
Connection conn = null;
//오라클 드라이버 경로 설정
String driver = "oracle.jdbc.driver.OracleDriver";
//내 db의 계정 경로 설정
String url = "jdbc:oracle:thin:@localhost:1521:xe";
//접속 성공,실패 여부 사용시 쓰는 변수
Boolean connect = false;
//db 접속 코드는 반드시 try~catch문 안에 써줘야함
try {
//오라클 드라이버 접속
Class.forName(driver);
//내 db 접속
conn = DriverManager.getConnection(url, "scott", "1234");
//접속성공시 true 설정
connect = true;
//접속 끊기, 끊는 이유 : 항상 db가 연결되어 있으면 접속 오류 및 데이터 충돌이 일어나기 때문
conn.close();
} catch (Exception e) {
//접속 실패시 false 잡고 예외처리해줌
connect = false;
e.printStackTrace();
}
%>
<%
if(connect==true){%>
연결되었습니다.
<%}else{ %>
연결에 실패하였습니다.
<%}%>
'TOOL' 카테고리의 다른 글
[Eclipse] 이클립스 단축키 (0) | 2021.01.27 |
---|---|
[Android Studio] Logcat 윈도우 창 (0) | 2020.06.24 |
[Android Studio] 축약어 설정, 로그 기본 세팅, Live template (0) | 2020.06.24 |
[Android Studio] 파일 생성 시 자동 주석 (0) | 2020.06.22 |
[VSCODE] 터미널 > git bash로 사용하기 (0) | 2020.02.05 |