3장. 클래스 로드 및 모듈
3.1. 소개
3.1.1. 클래스 로드 및 모듈 개요
JBoss EAP는 모듈식 클래스 로드 시스템을 사용하여 배포된 애플리케이션의 클래스 경로를 제어합니다. 이 시스템은 기존의 계층형 클래스 로더 시스템보다 더 높은 유연성과 제어력을 제공합니다. 개발자는 애플리케이션에 사용할 수 있는 클래스를 세부적으로 제어할 수 있으며, 자체 애플리케이션에 대해 애플리케이션 서버에서 제공하는 클래스를 무시하도록 배포를 구성할 수 있습니다.
모듈식 클래스 로더는 모든 Java 클래스를 모듈이라는 논리 그룹으로 분리합니다. 각 모듈은 해당 모듈의 클래스를 자체 클래스 경로에 추가하기 위해 다른 모듈에 대한 종속성을 정의할 수 있습니다. 배포된 각 JAR 및 WAR 파일은 모듈로 처리되므로 개발자는 모듈 구성을 애플리케이션에 추가하여 애플리케이션 클래스 경로의 콘텐츠를 제어할 수 있습니다.
3.1.2. 배포에서 클래스 로드
클래스 로드의 목적을 위해 JBoss EAP는 모든 배포를 모듈로 처리합니다. 이러한 모듈을 동적 모듈이라고 합니다. 클래스 로드 동작은 배포 유형에 따라 다릅니다.
- WAR 배포
-
WAR 배포는 단일 모듈로 간주됩니다.
WEB-INF/lib디렉토리의 클래스는WEB-INF/classes디렉토리의 클래스와 동일하게 처리됩니다. WAR에 패키지된 모든 클래스가 동일한 클래스 로더로 로드됩니다. - EAR 배포
EAR 배포는 두 개 이상의 모듈로 구성되며 다음 규칙에 의해 정의됩니다.
-
EAR의
lib/디렉터리는 상위 모듈이라는 단일 모듈입니다. - EAR 내의 각 WAR 배포는 단일 모듈입니다.
- EAR 내의 각 Jakarta Enterprise Beans JAR 배포는 단일 모듈입니다.
-
EAR의
하위 배포 모듈(예: EAR 내에 WAR 및 JAR 배포)에는 상위 모듈에 대한 자동 종속성이 있습니다. 그러나 서로에 대한 자동 종속성은 없습니다. 이는 하위 배포 격리라고 하며 배포당 또는 전체 애플리케이션 서버에 대해 비활성화할 수 있습니다.
하위 배포 모듈 간의 명시적 종속성은 다른 모듈과 동일한 방법으로 추가할 수 있습니다.
3.1.3. 클래스 로드 우선 순위
JBoss EAP 모듈식 클래스 로더는 우선 순위 시스템을 사용하여 클래스 로드 충돌을 방지합니다.
배포하는 동안 각 배포 및 각 종속 항목에 대해 전체 패키지 및 클래스 목록이 생성됩니다. 목록은 클래스 로드 우선 순위 규칙에 따라 정렬됩니다. 런타임 시 클래스를 로드할 때 클래스 로더가 이 목록을 검색하고 첫 번째 일치 항목을 로드합니다. 이렇게 하면 배포 클래스 경로 내의 동일한 클래스 및 패키지가 서로 충돌하지 않도록 합니다.
클래스 로더는 가장 높은 순서에서 가장 낮은 순서로 클래스를 로드합니다.
암시적 종속성: 이러한 종속성은 자카르타 EE API와 같은 JBoss EAP에서 자동으로 추가합니다. 이러한 종속성은 JBoss EAP에서 제공하는 공통 기능과 API를 포함하므로 가장 높은 수준의 로더 우선 순위를 가집니다.
암시적 종속성에 대한 자세한 내용은 암시적 모듈 종속성을 참조하십시오.
명시적 종속성: 이러한 종속성은 애플리케이션의
MANIFEST.MF파일 또는 새로운 선택적 JBoss 배포 설명자jboss-deployment-structure.xml파일을 사용하여 애플리케이션 구성에 수동으로 추가됩니다.명시적 종속성을 추가하는 방법에 대해서는 Add an Explicit Module Dependency to a Deployment 를 참조하십시오.
-
로컬 리소스: 배포 자체에 패키지된 클래스 파일입니다(예: WAR 파일의
WEB-INF/classes또는WEB-INF/lib디렉토리). -
배포 간 종속성: EAR 배포의 다른 배포에 종속되어 있습니다. EAR의
lib디렉토리에 클래스 또는 다른 Jakarta Enterprise Beans jar에 정의된 클래스가 포함될 수 있습니다.
3.1.4. jboss-deployment-structure.xml
jboss-deployment-structure.xml 파일은 JBoss EAP의 선택적 배포 설명자입니다. 이 배포 설명자는 배포에서 클래스 로드를 제어합니다.
이 배포 설명자의 XML 스키마는 EAP_HOME/docs/schema/jboss-deployment-structure-1_2.xsd의 제품 설치 디렉터리에 있습니다.
이 배포 설명자를 사용하여 수행할 수 있는 주요 작업은 다음과 같습니다.
- 명시적 모듈 종속성 정의.
- 특정 암시적 종속성이 로드되지 않도록 합니다.
- 해당 배포의 리소스에서 추가 모듈 정의.
- 해당 EAR 배포에서 하위 배포 격리 동작 변경.
- EAR의 모듈에 리소스 루트 추가.