에 놓아야만 정상적으로 DB에 접근할 수 있을까?
왜 context.HOME/web-inf/lib 에 jdbc lib 를 놓으면 classNotFound Exception 이 나오는 것일까? 에 대한 해답입니다.
1. tomcat classloader relation
Bootstrap | ||
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 낭만고양이