iWiz ShareBase

IT Specialist 윤태현의 iWiz ShareBase는 IT뿐 아니라 각종 잡다한 지식들을 함께 나누는 지식공유 커뮤니티입니다.

iWiz,ShareBase,윤태현,Java,JSP,EJB,IT,정보기술,웹프로그래밍,PHP,ASP,DBMS,MySQL,서버,네트워크,server,network,WAS,웹애플리케이션,블로그,blog,웹서버,DB,오라클,oracle,mysql,JRun,웹로직,톰캣,tomcat,아파치,자동차,EF쏘나타,로또 6/45

갤러리 Pixelgrapher.com | 로또 6/45 번호생성 및 통계 데이터 | 전체기사보기 | 전체글 #1 | 전체글 #2 | 전체글 #3 | 전체글 #4 | 전체글 #5 | 전체글 #6 | 전체글 #7 | 전체글 #8 | 전체글 #9 | 전체글 #10 |
HOME iWiz
ShareBase
Remember 0523 & 0818
지식은 나눌수록 커집니다 - iWiz's ShareBase
웹프로그래밍(기타) PHP, ASP, Perl, CGI 등 각종 웹프로그래밍에 관한 자료들입니다.


  iWiz(2004-01-04 22:27:56, Hit : 7712, Vote : 26
 http://www.wz.pe.kr

Java에서 DB연동시 JNDI와 커넥션풀 활용법 Part I


Java에서 좀 더 효율적인 DB 접속을 위한 방법을 제시해보고자 합니다.

기존의 Java에서 DB 연결은 보통 다음과 같은 방법으로 사용되고 있습니다.

String dbDriver = "org.gjt.mm.mysql.Driver";
String dbURL = "jdbc:mysql://127.0.0.1:3306/smipc";
Class.forName(dbDriver);
Connection dbConn = DriverManager.getConnection( dbURL, "myid", "mypass");

DB나 환경에 따라 조금씩 달라지고, exception 처리가 추가된다는 점을 빼고는 거의 동일할 것입니다.
이러한 코드를 각 서블릿이나 JSP 페이지마다 넣는 것보다 더 효율적인 방법은 include 시키거나, beans로
만들어 호출해 사용하는 방법이 있을 것입니다.  그러나 이 경우에도 서버에서 돌아가는 모든 애플리케이션이
DB접속을 위해 하나의 파일을 인클루드하거나, 하나의 빈즈만을 사용하지 않는 한 DB 관련 정보 변경시에는
각각의 애플리케이션에서 사용하는 DB 관련 파일이나 빈즈를 찾아서 수정해줘야 할 것입니다.
또 커넥션풀에 있어서도 이런 코드를 직접 사용한다면 처리가 다소 복잡해지겠죠.

좀 더 편리한 방법은 JNDI의 Data Source를 사용하는 것입니다.  JNDI의 개념에 대해서는 "JNDI(Java Naming and Directory Interface)는 자바 프로그램들을 DNS, LDAP 및 NDS 등과 같은 네이밍/디렉토리 서비스에 연결하기 위한 썬의 API이다. 애플리케이션은 JNDI API에 작성되어 있으며, 디렉토리 드라이버는 JNDI SPI (Service Provider Interface)에 작성되어 있다. JNDI는 썬의 J2EE 플랫폼의 일부이다."라고 설명이 되어 있습니다.  좀 복잡한 개념같지만 알고보면 그다지 어렵지는 않습니다.

예를들어 위의 예에서 사용했던 dbDriver나 dbURL, 호스트, 포트, ID, Password를 "MyDB"라는 이름으로 JNDI의 디렉토리 데이터에 등록시켜두고, 모든 애플리케이션에서 DB접속시 JNDI 디렉토리의 "MyDB"를 참고해 접속하도록 한다면 향후 DB의 ID나 비밀번호가 변경된다거나 혹은 DB서버가 바뀌는 경우에도 "MyDB"의 값만 변경시켜주면 바로 모든 애플리케이션이 변경된 DB를 참고해 동작하게 될 것입니다.  가능성은 희박하지만 DB종류에 무관하게 동작할 수 있는 표준 SQL구문 만을 사용하는 애플리케이션이라면 아예 DBMS 자체를 바꿀 수도 있을 것입니다. (Oracle->MySQL, MySQL->Oracle 등)

따라서 JNDI의 Data Source에 DB 관련 정보를 등록시켜두고, 모든 Java 애플리케이션에서 이 정보를 참조해 DB 연결을 만들도록 개발표준을 세운다면 향후 DB이전 등의 경우에 매우 유연하게 대처할 수 있습니다.

JNDI를 사용하려면 JNDI SPI (Service Provider Interface)가 필요한데, 물론 이것은 JRun에서 제공해주고 있습니다. (JRun뿐만 아니라 다른 자바 애플리케이션 서버들도 다 제공하죠)  JRun에서는 웹기반의 JMC(JRun Management Console)을 통해 매우 쉽고 편리하게 JNDI에 Data Source를 등록할 수 있습니다.

JRun에서 데이터베이스 접속을 위한 Data Source를 만들려면 다음과 같은 과정을 거치면 됩니다.
1. JMC 실행 (http://host:8000) 및 로그인
2. JRun 서버 선택 (설치시 admin, default, sample 세개의 서버가 만들어지는데 이중에서 개발 및 서비스에 사용할 서버를 선택하거나 별도로 만든 서버가 있다면 그것을 선택)
3. Resource 항목 선택
4. Data Source Name에 JNDI 이름을 입력 ("MyDB" 등 임의의 고유한 이름을 입력)
5. DB Driver 선택 (MySQL, Oracle, MS SQL, ...) 후 "Add" 버튼 클릭
6. DB에 따라 입력항목에 차이가 있는데, IP, 포트, 사용자, 비밀번호 등을 비롯해 SID 등 부가정보 입력
7. 커넥션풀을 사용할 경우 Pool Connections, Pool Statements, Native Results는 기본값으로 놔둠.
8. Submit를 눌러 입력 내용을 저장
9. v자 모양의 Verify 아이콘을 클릭해 실제 동작 여부 확인

이것으로 JRun에서의 Data Source 등록은 완료되었습니다.  과정이 많은 것 같지만 풀어서 썼기 때문에 그렇고 실제 과정은 아주 단순합니다.  한번만 해보면 다음부터는 눈감고도 할 수 있음을 장담합니다.

이제 JNDI 디렉토리에 "MyDB"라는 Data Source가 등록되었습니다.  물론 수정할 사항이 있으면 수정 버튼을 눌러 수정내용을 입력하거나, 아예 삭제하고 동일한 이름으로 다시 Data Source를 만들어도 됩니다.

그럼 다음 글에서 Connection Pool의 구현과 실제로 Java에서 JNDI Data Source를 이용해 DB에 커넥팅하는 코드를 소개해드리겠습니다. (정말 간단합니다 ^^)
* iWiz님에 의해서 게시물 이동되었습니다 (2010-02-03 16:57)



62   mod_throttle 모듈을 이용한 사용자 트래픽 제어  iWiz 2006/06/22 9132 0
61   Tomcat-Apache using JK2 connector  iWiz 2004/03/21 8423 41
60   RedHat 9.0에서의 JRun JSP 컴파일러의 문제점  iWiz 2004/01/04 5610 50
59   RedHat 9.0에서의 JRun-Apache 커넥터의 문제점  iWiz 2004/01/04 5236 48
58   JRun 4.0의 튜닝 관련 옵션  iWiz 2004/01/04 6006 68
57   JRun 4.0의 Activity 모니터링 방법  iWiz 2004/01/04 4977 57
56   JRun4.0: DataSource 커넥션풀 관련 옵션 [4]  iWiz 2004/01/04 6717 46
55   JRun에서 JSP 컴파일시 java 파일 생성하기  iWiz 2004/01/04 8131 63
54   JRun의 실제 서비스 운영시 고려사항  iWiz 2004/01/04 7605 44
53   수정된 인터넷 익스플로러에서 상호작용 ActiveX 컨트롤 활성화 가이드  iWiz 2006/03/03 8546 4
52   HTML 특수기호 엔터티(Entity) 테이블 [2]  iWiz 2006/03/03 14988 2
51   웹사이트의 새로운 혁명 Ajax [13]  iWiz 2005/11/22 5923 6
50   MSN 메신저 친구 자동등록 스크립트  iWiz 2004/10/12 6244 35
49   JavaScript MD5 해쉬 생성 함수  iWiz 2004/01/07 9185 35
48   JavaScript로 만든 진법변환 및 보수계산기 [4]  iWiz 2004/01/04 162006 51

1 [2][3][4][5]
 

Copyright 1999-2024 Zeroboard / skin by zero
iWiz ShareBase, ⓒCopyleft by iWiz.  For more information contact .
본 웹사이트에 게시된 이메일 주소가 전자우편 수집 프로그램이나 그 밖의 기술적 장치를 이용하여 무단으로 수집되는 것을 거부하며, 이를 위반시에는 정보통신망법에 의해 형사처벌됨을 유념하시기 바랍니다. [게시일 2004. 1. 31]