웹 서버의 LIB 디렉토리에 의존성을 전쟁 파일에 포함시키는 대신 종속성을 배치 할 이유가 있습니까?

StackOverflow https://stackoverflow.com/questions/1438738

문제

응용 프로그램에 종속성 JAR이있는 경우 전쟁 파일에 배치하거나 Lib 디렉토리에 배치하는 것이 좋습니다. 한 가지 접근 방식을 다른 접근 방식으로 사용하여 무엇을 얻습니까?

디스크 스페이스가 떠오르지 만 디스크 스페이스가 저렴한시기에 살고 있습니다. 메모리 사용 차이가 있습니까? 더 많은 경험을 가진 사람이 두 옵션의 장단점을 나열 할 수 있습니까?

도움이 되었습니까?

해결책

일반적으로 말하면, 전쟁 자체 포함하는 것이 훨씬 낫기 때문에 컨테이너 구성에 의존 할 필요가 없습니다. 배포도 훨씬 쉽게 만듭니다. 가능하다면 도서관을 전쟁에 넣으십시오.

그러나 컨테이너에 라이브러리를 설치하는 것이 합리적입니다. 예를 들어,

  1. 우리는 모든 WebApp에서 사용하는 일부 내부 라이브러리가 있으며 거대합니다. 컨테이너에 설치하여 모든 WebApp이 동일한 버전을 사용하고 메모리 및 디스크 공간을 절약합니다.

  2. Web-INF/LIB에 설치된 라이브러리는 컨테이너에 사용할 수 없습니다. context.xml (자원에 정의 된 JDBC 드라이버)에서이를 참조 해야하는 경우 서버/lib에 넣어야합니다.

  3. 모든 webapps에서 동일한 파일로 log4j 로그를 보내려면 서버/lib에 log4j jar를 넣어야합니다. 그렇지 않으면 각 WebApp은 자체 로거를 사용합니다.

다른 팁

컨테이너의 리소스 관리 기능 (예 : SQL 데이터베이스에 연결하고 JNDI 조회 및 연결 풀을 제공하려면 컨테이너 소프트웨어 자체가 리소스를 관리하려면 라이브러리 및 드라이버에 액세스해야합니다.

그렇지 않으면 서버 /lib 디렉토리에 설치하고 싶지 않을 것입니다. 다른 웹 응용 프로그램마다 미묘하게 다른 버전 요구 사항이있을 수 있으므로 작동 중이며 작동한다고 가정합니다.

Catalina에서 구현 한 클래스 로더 계층 구조에 대한 심층적 인 설명을 보려면 Tomcat 's를 확인해야합니다. 클래스 로더 방법. 이렇게하면 컨테이너, 모든 WebApps, 단일 웹 앱으로 만 컨테이너에 항아리를 사용할 수있는시기를 이해하는 데 도움이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top