톰캣 lib 실행 순서 (4)

이전 포스팅에서 톰캣의 lib 실행순서를

직접 확인했다. 첫 번째로

.class 파일을 읽고

두 번째로 WEB-INF/lib

세 번째로 tomcat/lib 를 읽었다.


사실 이 lib 실행순서는 톰캣 문서에 적혀 있다.

나는 톰캣7을 사용했으니 톰캣7문서를 읽어보겠다.


톰캣문서 : (https://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.html)



톰캣은 클래스나 리소스를 로딩할때 아래의 순서로

로딩한다고 적혀있다. 이전 포스팅에서 테스트했던 순서이다.


<Loader delegate="true"/>를 사용하면

순서가 바뀌는데 한번 사용해보자.


먼저 위에서 바뀌는 실행순서를 보면

기존에는 WEB-INF/lib 가 먼저 로딩됬지만

tomcat/lib 가 먼저 로딩되는것으로 순서가 바뀌게 된다.


WEB-INF/lib에는 first.jar를 넣고

tomcat/lib 에는 second.jar를 넣고 준비를해보자.


이제 <Loader delegate="true"/>를 사용해보자.

아래의 경로에서 context.xml을 수정하면된다.



<Context> 안에 <Loader delegate="true"/>를 추가해주면 된다.



다음 실행을 해보면 second getMessage~~!!가 출력된다.



<Loader delegate="true"/>를 사용하지 않았을때는

WEB-INF/lib 가 먼저 로딩되어 first getMessage~~!! 가

출력되었지만 <Loader delegate="true"/>를 사용하여

실행순서가 바뀌어 tomcat/lib가 먼저 로딩되어

second getMessage~~!!가 출력된것이다.



마지막으로 톰캣 문서에있는 endorsed 에 대해 알아보자.

대충 읽어보니 자바9까지 지원되는것 같다

endorsed 폴더를 생성해 lib를 넣으면 가장 먼저

로딩된다고 설명되어있는것 같다.



아래경로에 endorsed 폴더를 생성해주고

third.jar 파일을 넣어주자

그리고 WEB-INF/lib 에 first.jar

tomcat/lib 에 second.jar를 같이 넣어주도록 하자.



그리고 실행시켜보면 third getMessage~~!!가 출력되게된다.

classes 폴더에 .class를 넣어줘도 endorsed폴더의 lib가

가장 먼저 로딩되게된다.

'JSP' 카테고리의 다른 글

톰캣 lib 실행 순서 (3)  (0) 2019.02.24
톰캣 lib 실행 순서 (2)  (0) 2019.02.24
톰캣 lib 실행 순서 (1)  (0) 2019.02.24
JSP Servlet 페이징 구현하기(2) JSP + Oracle  (2) 2018.11.11
JSP Servlet 페이징 구현하기(1) JSP + Oracle  (0) 2018.11.10

댓글

Designed by JB FACTORY