톰캣과 같은 주류 자바 웹 서버는 자체 정의한 클래스 로더를 사용한다. 그리고 대표적인 이유는 아래와 같다.
똑같은 서버에 배포하더라도 클래스 라이브러리는 웹 애플리케이션 별로 격리하는 것이 좋다. 애플리케이션마다 필요로 하는 버전은 다를 수 있기 때문이다.
서버는 보안을 최대한 유지해서 배포된 웹 애플리케이션들의 영향을 받지 않아야한다.
이런 조건들 때문에 클래스패스가 하나뿐인 구조는 다수의 웹 에플리케이션을 배포하기에 적합하지 않다. 서드 파티 클래스 라이브러리 저장용으로 별도의 클래스패스가 제공되는데 이떄 주로 사용되는 경로명은 lib 과 classes 다.
톰캣 서버를 예시로, 자바 클래스 라이브러리 저장용 디렉터리 3개
/common : 톰캣 자신과 모든 웹 어플리케이션
/server : 톰캣 자신
/shared : 톰캣을 제외한 모든 웹 어플리케이션
웹 애플리케이션 자체 저장용 디렉터리 1개
/WEB-INF/ 해당 웹 애플리케이션
총 4개의 디렉터리가 핵심이다. 톰캣에서는 다양한 클래스로더가 각 디럭터리의 클래스들을 담당한다. 대표적으로는 공통클래스로더, 카탈리나 클래스로더 (서버 클래스로더), 공유 클래스로더, 웹 앱 클래스로더가 존재한다.