5장. JBoss EAP 클래스 로드 개요


JBoss EAP는 배포된 애플리케이션의 클래스 경로를 제어하기 위해 모듈식 클래스 로드 시스템을 사용합니다. 이 시스템은 계층적 클래스 로더의 기존 시스템보다 유연성과 제어 기능을 제공합니다. 개발자는 애플리케이션에서 사용할 수 있는 클래스를 세밀하게 제어할 수 있으며 애플리케이션 서버에서 제공하는 클래스를 무시하도록 배포를 구성할 수 있습니다.

모듈식 클래스 로더는 모든 Java 클래스를 모듈이라는 논리 그룹으로 구분합니다. 각 모듈은 다른 모듈에 대한 종속성을 정의하여 해당 모듈의 클래스를 자체 클래스 경로에 포함할 수 있습니다. 배포된 각 Java Archive(JAR) 및 Web Archive(WAR) 파일은 모듈로 처리되므로 개발자는 모듈 구성을 추가하여 애플리케이션의 클래스 경로 내용을 제어할 수 있습니다.

5.1. JBoss EAP의 모듈 유형

모듈은 클래스 로드 및 종속성 관리에 사용되는 클래스의 논리 그룹입니다. JBoss EAP는 다음 두 가지 유형의 모듈을 식별합니다.

  • 정적 모듈
  • 동적 모듈

이 둘의 가장 큰 차이점은 패키지화 방법입니다.

JBoss EAP는 사전 정의된 모듈 세트도 제공합니다.

5.1.1. JBoss EAP의 정적 모듈

정적 모듈은 애플리케이션 서버의 EAP_HOME/modules/ 디렉터리에 정의됩니다. 각 모듈은 하위 디렉터리로 존재합니다(예: EAP_HOME/modules/com/mysql/ ). 그런 다음 각 모듈 디렉터리에는 기본 설정 파일과 module.xml (JAR) 파일이 포함된 slot 하위 디렉터리가 포함되어 있습니다. 모든 애플리케이션 서버 제공 API는 Jakarta EE API 및 기타 API를 포함하여 정적 모듈로 제공됩니다.

예: MySQL JDBC Driver module.xml 파일

<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.9" name="com.mysql">
  <resources>
    <resource-root path="mysql-connector-j-8.0.33.jar"/>
  </resources>
  <dependencies>
    <module name="java.xml" export="true"/>
    <module name="java.xml.crypto" export="true"/>
    <module name="jdk.xml.dom" export="true"/>
    <module name="jakarta.transaction.api"/>
  </dependencies>
</module>
Copy to Clipboard Toggle word wrap

참고

MySQL 드라이버 JAR 이름 mysql-connector-j-8.0.33.jar는 예제로만 제공됩니다. 테스트된 MySQL 버전에 대한 자세한 내용은 테스트 된 데이터베이스 를 참조하십시오.

모듈 이름 com.mysql 은 슬롯 이름을 제외하고 모듈의 디렉터리 구조와 일치해야 합니다.

동일한 타사 라이브러리를 사용하는 동일한 서버에 많은 애플리케이션이 배포되는 경우 사용자 지정 정적 모듈을 생성할 수 있습니다. 각 애플리케이션과 함께 이러한 라이브러리를 번들하는 대신 관리자가 이러한 라이브러리를 포함하는 모듈을 생성하고 설치할 수 있습니다. 그런 다음 애플리케이션은 사용자 지정 정적 모듈에 대한 명시적 종속성을 선언할 수 있습니다.

JBoss EAP 배포에 제공된 모듈은 EAP_HOME/modules 디렉터리 내의 시스템 디렉터리에 있습니다. 이렇게 하면 타사가 제공하는 모듈과 별도로 유지됩니다. JBoss EAP 상단에 계층이 있는 모든 Red Hat 제품도 시스템 디렉터리에 모듈을 설치했습니다.

사용자는 모듈당 하나의 디렉터리를 사용하여 사용자 지정 모듈이 EAP_HOME/modules 디렉터리에 설치되어 있는지 확인해야 합니다. 이렇게 하면 제공된 버전 대신 시스템 디렉터리에 이미 존재하는 모듈의 사용자 지정 버전이 로드됩니다. 이러한 방식으로 사용자 제공 모듈이 시스템 모듈보다 우선합니다.

JBOSS_MODULEPATH 환경 변수를 사용하여 JBoss EAP가 모듈을 검색하는 위치를 변경하는 경우 제품은 지정된 위치 중 하나의 시스템 하위 디렉터리 구조를 찾습니다. 시스템 구조는 JBOSS_MODULEPATH 로 지정된 위치에 있어야 합니다.

module.xml 파일의 resource-root path 요소에서 절대 경로 사용도 지원됩니다. 이렇게 하면 리소스 라이브러리를 EAP_HOME/modules 디렉터리로 이동할 필요 없이 액세스할 수 있습니다.

예: module.xml 파일의 절대 경로

<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.9" name="oracle.jdbc">
    <resources>
        <resource-root path="/home/redhat/test.jar"/>
    </resources>
</module>
Copy to Clipboard Toggle word wrap

5.1.2. JBoss EAP의 동적 모듈

동적 모듈은 각 JAR(Java Archive) 또는 WAR(Web Archive) 배포에 대해 애플리케이션 서버에서 생성 및 로드하거나 Enterprise Archive(EAR)의 각 하위 배포에 대해 생성 및 로드합니다. 동적 모듈의 이름은 배포된 아카이브의 이름에서 파생됩니다. 배포는 모듈로 로드되므로 종속성을 구성하고 다른 배포에서 종속성으로 사용할 수 있습니다.

모듈은 일반적으로 명시적 또는 암시적 종속성을 사용하는 애플리케이션이 배포되는 경우에만 필요합니다.

5.1.3. JBoss EAP에서 사전 정의된 모듈

애플리케이션 서버에서 기본 모듈 로더를 사용하는 경우 사전 정의된 모듈 세트를 사용할 수 있습니다. 모든 JBoss Modules API를 포함하는 특수 모듈 org.jboss.modules 에서는 항상 사용할 수 있으며 JBoss 모듈에서 제공합니다. 표준 JPMS(Java Platform Module System) 모듈도 표준 이름으로 사용할 수 있습니다.

Java 9 이상에서 사용할 수 있는 플랫폼 모듈 목록은 적절한 JDK 설명서를 참조하십시오.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat
맨 위로 이동