2013-01-31 1 views
1

다음에 대해 궁금합니다. 단일 웹 애플리케이션 전용 Tomcat 7이 있습니다. $ TOMCAT_HOME/lib 디렉토리 안에 항아리를 넣을 수 있습니까? documentation 그것은 말한다 : 따라서Tomcat 7 lib 디렉토리의 jar 파일

, 웹 응용 프로그램, 클래스 또는 자원로드의 관점에서이 순서대로 다음 저장소에 보이는 : 당신의 JVM의

  • 부트 스트랩 클래스
  • (위에서 설명한) 시스템 클래스 로더 클래스 웹 응용 프로그램을 웹 응용 프로그램의
  • /WEB-INF/lib/*.jar의
  • /WEB-INF/클래스
  • 내가 제대로이 글을 읽고 있어요 경우 (위에서 설명한)개
  • 일반적인 클래스 로더 클래스

그래서, 내가 avtivemq 또는 평민 - DBCP를 넣어해야 할 이유가 없다. 나는 대신 webapps lib 폴더에 그들을 배치 할 수 있고 그들이 먼저 집어들 것이라고 절대적으로 확신 할 수 있습니다. 그렇다면 $ TOMCAT_HOME/lib 디렉토리를 사용하는 다른 시나리오가 있습니까? 그렇지 않다면 위의 결함이있는 곳을 설명해 주시겠습니까?

감사합니다,

G.

답변

1

경우 웹 어플리케이션 (또는 대부분)은 $ TOMCAT_HOME에 공유해야 동일한 버전 (즉, 데이터베이스 드라이버 또는 SPI ObjectFactories)와 같은 라이브러리를 공유해야합니다/lib. 공유 라이브러리에 대한 확실한 이유가 없다면 웹 응용 프로그램의 클래스 로더에 보관하십시오.

0

예. 웹 응용 프로그램을 다시 시작한 경우 (예 : 라이브 버전을 새로 업로드하거나 Tomcat 관리자 콘솔에서 "다시 시작"버튼을 누르면) webapp 폴더의 모든 jar 파일은 플러시되고 다시로드되지만 공유 라이브러리 폴더의 모든 jar 파일은 플러시되지 않고 다시로드됩니다. 다시로드되었습니다. 즉, jar의 클래스에 저장된 정적 값은 재설정되지 않으며 jar가 초기화시 시작하는 모든 스레드는 다시 시작되지 않습니다. 질문에 jar 파일에 대해 알지는 못하지만 다른 jar 파일 (특히 데몬 스레드를 시작하고 종료하지 않을 것이라고 가정하는 파일)에 대해 중요 할 수 있습니다. 종료하면 컨텍스트 누출이 발생합니다. 재로드가 빈번한 경우 시간이 지남에 따라 상당한 양의 추가 메모리 사용이 발생할 수있는 웹 응용 프로그램 폴더에있는 파일).

관련 문제