톰캣의 lib 실행순서 (4) - 퍼옴

2021. 10. 1. 15:33java/WEB WAS

728x90
반응형

https://rwd337.tistory.com/227?category=650715 

 

톰캣 lib 실행 순서 (1)

개발을할때 엄청난 양의 lib를 사용한다. 보통 프로젝트에서 우린 lib를 추가할때 WEB-INF/lib 경로에 라이브러리를 추가해 사용한다. 하지만 lib의 경로는 WEB-INF/lib 에만 있는게 아니다. 톰캣을 설치

rwd337.tistory.com

https://rwd337.tistory.com/228?category=650715 

 

톰캣 lib 실행 순서 (2)

이제 저번 포스팅에서 만든 getMessage.java 클래스를 jar파일로 만들어 lib 에 jar파일을 넣고 실행을 해보자 우선 아래처럼 java 파일을 선택후 Export 해준다. 다음 JAR file을 선택해 Next해준다. JAR file이.

rwd337.tistory.com

https://rwd337.tistory.com/229?category=650715 

 

톰캣 lib 실행 순서 (3)

이번엔 명령프롬프트 창에서 직접 톰캣을 구동해 직접 lib 를 읽어보는 테스트를 해보자. 먼저 이전 포스팅처럼 getMessage.java 클래스를 만들고 getMessage~~!!를 출력하게끔 만들었다. 이제 jsp 에서 한

rwd337.tistory.com

이전 포스팅에서 톰캣의 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가

가장 먼저 로딩되게된다.

 

728x90
반응형