2021. 10. 1. 15:33ㆍjava/WEB WAS
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가
가장 먼저 로딩되게된다.