3.2. 배포에 명시적 모듈 종속성 추가

명시적 모듈 종속성을 애플리케이션에 추가하여 해당 모듈의 클래스를 배포 시 애플리케이션의 클래스 경로에 추가할 수 있습니다.

참고

JBoss EAP는 배포에 몇 가지 종속성을 자동으로 추가합니다. 자세한 내용은 암시적 모듈 종속성을 참조하십시오.

사전 요구 사항

  1. 모듈 종속성을 추가할 작업 중인 소프트웨어 프로젝트입니다.
  2. 종속성으로 추가되는 모듈의 이름을 알아야 합니다. JBoss EAP 에 포함된 정적 모듈 목록은 포함된 모듈 목록을 참조하십시오. 모듈이 다른 배포인 경우 JBoss EAP 구성 가이드에서 동적 모듈 명명 을 참조하여 모듈 이름을 확인합니다.

종속성은 다음 두 가지 방법을 사용하여 구성할 수 있습니다.

  • 배포의 MANIFEST.MF 파일에 항목 추가.
  • jboss-deployment-structure.xml 배포 설명자에 항목 추가.

MANIFEST.MF에 종속성 설정 추가

MANIFEST.MF 파일에 필요한 종속성 항목을 생성하도록 Maven 프로젝트를 구성할 수 있습니다.

  1. 프로젝트에 없는 경우 MANIFEST.MF 라는 파일을 생성합니다. 웹 애플리케이션(WAR)의 경우 이 파일을 META-INF/ 디렉터리에 추가합니다. Jakarta Enterprise Beans 아카이브(JAR)의 경우 META-INF/ 디렉터리에 추가합니다.
  2. 종속성 모듈 이름의 쉼표로 구분된 목록을 사용하여 MANIFEST.MF 파일에 dependencies 항목을 추가합니다.

    Dependencies: org.javassist, org.apache.velocity, org.antlr
    • 종속성을 선택으로 만들려면 종속성 항목의 모듈 이름에 optional 를 추가합니다.

      Dependencies: org.javassist optional, org.apache.velocity
    • 종속성은 종속성 항목에서 모듈 이름에 내보내기를 추가하여 내보낼 수 있습니다.

      Dependencies: org.javassist, org.apache.velocity export
    • 주석 플래그는 모듈 종속성에 Jakarta Enterprise Beans 인터셉터를 선언하는 경우와 같이 주석 스캔 중에 처리해야 하는 주석이 포함된 경우 필요합니다. 이 기능이 없으면 모듈에 선언된 Jakarta Enterprise Beans 인터셉터는 배포에 사용할 수 없습니다. 이 작업도 필요할 때 주석 검사와 관련된 다른 상황이 있습니다.

      Dependencies: org.javassist, test.module annotations
    • 종속성의 META-INF 에 있는 기본 항목은 액세스할 수 없습니다. 서비스 종속성을 사용하면 META-INF/서비스의 항목에 액세스하여 모듈의 서비스를 로드할 수 있습니다.

      Dependencies: org.javassist, org.hibernate services
    • beans.xml 파일을 스캔하고 결과 빈을 애플리케이션에서 사용할 수 있도록 하려면 meta-inf 종속성을 사용할 수 있습니다.

      Dependencies: org.javassist, test.module meta-inf

jboss-deployment-structure.xml에 종속성 구성 추가

  1. 애플리케이션에 없는 경우 jboss-deployment-structure.xml 이라는 새 파일을 생성하여 프로젝트에 추가합니다. 이 파일은 <jboss-deployment-structure>의 루트 요소가 있는 XML 파일입니다.

    <jboss-deployment-structure>
    
    </jboss-deployment-structure>

    웹 애플리케이션(WAR)의 경우 이 파일을 WEB-INF/ 디렉토리에 추가합니다. Jakarta Enterprise Beans 아카이브(JAR)의 경우 META-INF/ 디렉터리에 추가합니다.

  2. 문서 루트 및 < dependencies> 요소 내에 <deployment > 요소를 만듭니다.
  3. <dependencies> 노드 내에 각 모듈 종속성에 대한 모듈 요소를 추가합니다. name 속성을 모듈의 이름으로 설정합니다.

    <module name="org.javassist" />
    • true 를 사용하여 모듈 항목에 선택적 속성을 추가하여 종속성을 선택 사항으로 만들 수 있습니다. 이 속성의 기본값은 false 입니다.

      <module name="org.javassist" optional="true" />
    • 종속 항목은 값이 true 인 모듈 항목에 export 특성을 추가하여 내보낼 수 있습니다. 이 속성의 기본값은 false 입니다.

      <module name="org.javassist" export="true" />
    • 모듈 종속성에 주석 스캔 중에 처리해야 하는 주석이 포함된 경우 주석 플래그가 사용됩니다.

      <module name="test.module" annotations="true" />
    • services 종속성은 이 종속성에서 발견되는 서비스가 사용되는지 여부와 방법을 지정합니다. 기본값은 none 입니다. 이 속성에 대한 가져오기 값을 지정하는 것은 dependency 모듈의 META-INF/services 경로를 포함하는 가져오기 필터 목록의 끝에 필터를 추가하는 것과 동일합니다. 이 속성에 대한 export 값을 설정하는 것은 내보내기 필터 목록에서 동일한 작업과 동일합니다.

      <module name="org.hibernate" services="import" />
    • META-INF 종속성은 이 종속성의 META-INF 항목이 사용되는지 여부와 방법을 지정합니다. 기본값은 none 입니다. 이 속성에 대한 가져오기 값을 지정하는 것은 종속성 모듈의 META-INF/** 경로를 포함하는 가져오기 필터 목록의 끝에 필터를 추가하는 것과 동일합니다. 이 속성에 대한 export 값을 설정하는 것은 내보내기 필터 목록에서 동일한 작업과 동일합니다.

      <module name="test.module" meta-inf="import" />

예: 두 개의 종속성이 있는 jboss-deployment-structure.xml 파일

<jboss-deployment-structure>
   <deployment>
      <dependencies>
         <module name="org.javassist" />
         <module name="org.apache.velocity" export="true" />
      </dependencies>
   </deployment>
</jboss-deployment-structure>

JBoss EAP는 지정된 모듈의 클래스를 배포할 때 애플리케이션의 클래스 경로에 추가합니다.

Jandex 인덱스 생성

annotations 플래그를 사용하려면 모듈에 Jandex 인덱스가 포함되어야 합니다. JBoss EAP 7.4에서는 자동으로 생성됩니다. 그러나 자동 검사는 CPU를 사용하고 배포 시간을 늘리는 긴 프로세스일 수 있으므로 성능상의 이유로 인덱스를 수동으로 추가하는 것이 좋습니다.

인덱스를 수동으로 추가하려면 새 "index JAR"을 생성하여 모듈에 추가합니다. Jandex JAR을 사용하여 인덱스를 빌드한 다음 새 JAR 파일에 삽입합니다. 현재 구현에서는 모듈 내의 JAR 파일에 인덱스가 추가되면 검사가 실행되지 않습니다.

Jandex 인덱스 생성::

  1. 인덱스를 생성합니다.

    java -jar modules/system/layers/base/org/jboss/jandex/main/jandex-jandex-2.0.0.Final-redhat-1.jar $JAR_FILE
  2. 임시 작업 공간을 생성합니다.

    mkdir /tmp/META-INF
  3. 인덱스 파일을 작업 디렉터리로 이동합니다.

    mv $JAR_FILE.ifx /tmp/META-INF/jandex.idx
    1. 옵션 1: 새 JAR 파일에 인덱스 포함

      jar cf index.jar -C /tmp META-INF/jandex.idx

      그런 다음 모듈 디렉터리에 JAR을 배치하고 module.xml 을 편집하여 리소스 루트에 추가합니다.

    2. 옵션 2: 기존 JAR에 인덱스 추가

      java -jar /modules/org/jboss/jandex/main/jandex-1.0.3.Final-redhat-1.jar -m $JAR_FILE
  4. 주석 스캔에서 주석을 찾을 수 있도록 모듈 가져오기에 주석 색인을 활용하도록 지시합니다.

    1. 옵션 1: MANIFEST.MF 를 사용하여 모듈 종속성을 추가하는 경우 모듈 이름 뒤에 주석을 추가합니다. 예를 들면 다음과 같습니다.

      Dependencies: test.module, other.module

      다음으로 변경

      Dependencies: test.module annotations, other.module
    2. 옵션 2: jboss-deployment-structure.xml 을 사용하여 모듈 종속성 을 추가하는 경우 모듈 종속성에 annotations="true" 를 추가합니다.

      참고

      애플리케이션이 정적 모듈 내의 클래스에 정의된 주석이 있는 Jakarta EE 구성 요소를 사용하려는 경우 주석 색인이 필요합니다. JBoss EAP 7.4에서는 정적 모듈의 주석 색인이 자동으로 생성되므로 생성할 필요가 없습니다. 그러나 MANIFEST.MF 또는 jboss-deployment-structure. xml 파일에 종속성을 추가하여 주석을 사용하도록 모듈 가져오기에 지시해야 합니다.