3.2. 배포에 명시적 모듈 종속성 추가
명시적 모듈 종속성을 애플리케이션에 추가하여 해당 모듈의 클래스를 배포 시 애플리케이션의 클래스 경로에 추가할 수 있습니다.
JBoss EAP는 배포에 몇 가지 종속성을 자동으로 추가합니다. 자세한 내용은 암시적 모듈 종속성을 참조하십시오.
사전 요구 사항
종속성은 다음 두 가지 방법을 사용하여 구성할 수 있습니다.
-
배포의
MANIFEST.MF파일에 항목 추가. -
jboss-deployment-structure.xml배포 설명자에 항목 추가.
MANIFEST.MF에 종속성 설정 추가
MANIFEST.MF 파일에 필요한 종속성 항목을 생성하도록 Maven 프로젝트를 구성할 수 있습니다.
-
프로젝트에 없는 경우
MANIFEST.MF라는 파일을 생성합니다. 웹 애플리케이션(WAR)의 경우 이 파일을META-INF/디렉터리에 추가합니다. Jakarta Enterprise Beans 아카이브(JAR)의 경우META-INF/디렉터리에 추가합니다. 종속성 모듈 이름의 쉼표로 구분된 목록을 사용하여
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에 종속성 구성 추가
애플리케이션에 없는 경우
jboss-deployment-structure.xml이라는 새 파일을 생성하여 프로젝트에 추가합니다. 이 파일은<jboss-deployment-structure>의 루트 요소가 있는 XML 파일입니다.<jboss-deployment-structure> </jboss-deployment-structure>
웹 애플리케이션(WAR)의 경우 이 파일을
WEB-INF/디렉토리에 추가합니다. Jakarta Enterprise Beans 아카이브(JAR)의 경우META-INF/디렉터리에 추가합니다.-
문서 루트 및
<요소를 만듭니다.dependencies> 요소 내에 <deployment> <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 인덱스 생성::
인덱스를 생성합니다.
java -jar modules/system/layers/base/org/jboss/jandex/main/jandex-jandex-2.0.0.Final-redhat-1.jar $JAR_FILE
임시 작업 공간을 생성합니다.
mkdir /tmp/META-INF
인덱스 파일을 작업 디렉터리로 이동합니다.
mv $JAR_FILE.ifx /tmp/META-INF/jandex.idx
옵션 1: 새 JAR 파일에 인덱스 포함
jar cf index.jar -C /tmp META-INF/jandex.idx
그런 다음 모듈 디렉터리에 JAR을 배치하고
module.xml을 편집하여 리소스 루트에 추가합니다.옵션 2: 기존 JAR에 인덱스 추가
java -jar /modules/org/jboss/jandex/main/jandex-1.0.3.Final-redhat-1.jar -m $JAR_FILE
주석 스캔에서 주석을 찾을 수 있도록 모듈 가져오기에 주석 색인을 활용하도록 지시합니다.
옵션 1:
MANIFEST.MF를 사용하여 모듈 종속성을 추가하는 경우 모듈 이름 뒤에주석을추가합니다. 예를 들면 다음과 같습니다.Dependencies: test.module, other.module
다음으로 변경
Dependencies: test.module annotations, other.module
옵션 2:
jboss-deployment-structure.xml을 사용하여 모듈 종속성을 추가하는 경우 모듈 종속성에 annotations="true"를 추가합니다.참고애플리케이션이 정적 모듈 내의 클래스에 정의된 주석이 있는 Jakarta EE 구성 요소를 사용하려는 경우 주석 색인이 필요합니다. JBoss EAP 7.4에서는 정적 모듈의 주석 색인이 자동으로 생성되므로 생성할 필요가 없습니다. 그러나
MANIFEST.MF 또는파일에 종속성을 추가하여 주석을 사용하도록 모듈 가져오기에 지시해야 합니다.jboss-deployment-structure.xml