tomcat 5  에서  datasource를 이용해서 JDBC를 사용할 때 {catalina.HOME}/common/lib
에 놓아야만 정상적으로 DB에 접근할 수 있을까?
왜 context.HOME/web-inf/lib 에 jdbc  lib 를 놓으면 classNotFound Exception 이 나오는 것일까? 에 대한 해답입니다.
1. tomcat classloader relation
      Bootstrap
|
System
|
Common
/ \
Catalina Shared
/ \
Webapp1 Webapp2 ...

2.class relation 에서 적용되는  class 위치는 다음과 같습니다.
Bootstrap-System-Common --> {catalina.HOME}/common/lib, 시스템 classpath
Webapp1, Webapp2-->context.HOME/web-inf/lib
3. datasource가 context.xml의 설정을 통해서 실행될 때 적용 되는 class path는
Bootstrap-System-Common 입니다.
이 때 jdbc lib 가 context.HOME/web-inf/lib 에만 저장되어 있을 때는 접근할 수 없는 것이지요.
하지만  context를 통해서 접근하지 않고 JSP 상에서 직접 JDBC에 접촉하면  context.HOME/web-inf/lib 에 jar를 놓아 두어도  ClassNotFoundException은 발생하지 않습니다.

관련된 source는 첨부




Posted by 낭만고양이

2010/01/18 18:13 2010/01/18 18:13
, ,
Response
No Trackback , No Comment
RSS :
http://epr.pe.kr/tc/epr/rss/response/32

Trackback URL : http://epr.pe.kr/tc/epr/trackback/32

Leave a comment
[로그인][오픈아이디란?]