8.4. 누락된 종속성을 추적하는 방법
누락된 종속 항목을 추적하려면 다음 단계를 수행합니다.
-
bundle:diag
console 명령을 사용합니다. 이렇게 하면 번들이 비활성화된 이유에 대한 정보가 제공됩니다. 사용 정보는 Apache Karaf 콘솔 참조 에서 참조하십시오. -
빠른 검사를 수행하여 모든 필수 번들 및 기능이 실제로 OSGi 컨테이너에 설치되어 있는지 확인합니다.
bundle:list
를 사용하여 설치된 번들을 확인하고features:list
를 사용하여 설치된 기능을 확인할 수 있습니다. bundle:install
console 명령을 사용하여 번들을 설치(시작하지 않음)합니다. 예를 들면 다음과 같습니다.karaf@root()> bundle:install MyBundleURL
bundle:dynamic-import
console 명령을 사용하여 방금 설치한 번들에서 동적 가져오기를 활성화합니다. 예를 들어 번들의 번들 ID가 218인 경우 다음 명령을 입력하여 이 번들에서 동적 가져오기를 활성화합니다.karaf@root()> bundle:dynamic-import 218
이 설정을 사용하면 OSGi에서 컨테이너에 이미 설치된 번들을 사용하여 종속성을 확인할 수 있으므로 일반적인 종속성 확인 메커니즘(
Import-Package
헤더 기반)을 효과적으로 우회할 수 있습니다. 이는 버전 검사를 우회하기 때문에 정상적인 배포에 대해 기억되지 않습니다. 잘못된 버전의 패키지를 쉽게 선택하여 애플리케이션이 오작동할 수 있습니다.이제 번들을 확인할 수 있습니다. 예를 들어 번들 ID가 218인 경우 followng console 명령을 입력합니다.
karaf@root()> bundle:resolve 218
이제 번들이 해결되었다고 가정하면
package
연결된 모든 패키지 목록을 가져올 수 있습니다. 예를 들어 번들 ID가 218인 경우 다음 console 명령을 입력합니다.:imports
명령을 사용하여 번들에karaf@root()> package:imports -b 218
콘솔 창에 종속 패키지 목록이 표시됩니다.
Package │ Version │ Optional │ ID │ Bundle Name ─────────────────────────────────────┼───────────────┼────────────┼─────┼────────────────────────────────── org.apache.jasper.servlet │ [2.2.0,3.0.0) │ resolved │ 217 │ org.ops4j.pax.web.pax-web-runtime org.jasypt.encryption.pbe │ │ resolved │ 217 │ org.ops4j.pax.web.pax-web-runtime org.ops4j.pax.web.jsp │ [7.0.0,) │ resolved │ 217 │ org.ops4j.pax.web.pax-web-runtime org.ops4j.pax.web.service.spi.model │ [7.0.0,) │ │ 217 │ org.ops4j.pax.web.pax-web-runtime org.ops4j.pax.web.service.spi.util │ [7.0.0,) │ │ 217 │ org.ops4j.pax.web.pax-web-runtime ...
-
번들 JAR 파일의 압축을 풀고
META-INF/MANIFEST.MF
파일의Import-Package
헤더 아래에 나열된 패키지를 확인합니다. 이 목록을 이전 단계에서 발견된 패키지 목록과 비교합니다. 이제 매니페스트의Import-Package
헤더에서 누락된 패키지 목록을 컴파일하고 이러한 패키지 이름을 프로젝트의 POM 파일에 있는 Maven 번들 플러그인 구성의Import-Package
요소에 추가합니다. 동적 가져오기 옵션을 취소하려면 OSGi 컨테이너에서 이전 번들을 제거해야 합니다. 예를 들어 번들 ID가 218인 경우 다음 명령을 입력합니다.
karaf@root()> bundle:uninstall 218
- 이제 가져온 패키지 목록을 사용하여 번들을 다시 빌드하고 OSGi 컨테이너에서 테스트할 수 있습니다.
addurl :experimental: :toclevels: 4 :numbered: