OSGi 번들

OSGi 번들은 Java™ 코드, 자원 및 번들과 그 종속 항목을 설명하는 Manifest가 포함된 Java 아카이브 파일입니다. 번들은 애플리케이션의 배치 단위입니다.

번들 유형
OSGi 번들 Manifest 파일
번들 라이프사이클

번들 유형

애플리케이션 번들
애플리케이션 번들은 사용자가 애플리케이션에서 특별히 작성하는 번들입니다. 이 번들은 인스턴스에 특정하거나 격리되어 있습니다. 즉, 공유할 의도를 띄지 않습니다. 또한 Application-Content 헤더의 애플리케이션 Manifest에서 참조됩니다.
공유 번들
공유 번들은 애플리케이션 특정이 아닙니다. 공유 번들에 있는 패키지의 한 인스턴스는 여러 애플리케이션에서 사용할 수 있습니다. 공유 번들은 애플리케이션 번들에서 패키지 또는 서비스를 가져올 수 없습니다. 애플리케이션의 공유 번들은 애플리케이션에 직접 포함되지 않고 참조로 제공되어야 합니다.
공유 번들은 사용 번들과 프로비전 번들로 더 세분화됩니다.
사용 번들
사용 번들은 적어도 하나의 패키지를 애플리케이션 번들에 제공하는 공유 번들입니다. 사용 번들은 사용 번들 헤더의 애플리케이션 Manifest에서 참조합니다.
프로비전 번들
프로비전 번들은 애플리케이션 번들, 사용 번들 또는 다른 프로비전 번들에 하나 이상의 패키지 또는 서비스를 제공하는 공유 번들입니다. 프로비전 번들은 애플리케이션 Manifest에서 참조되지 않으며, 애플리케이션에서는 각 프로비전 번들에 대한 요구사항이 어떻게 충족되는지 알 수 없습니다.
OSGi 번들은 다음 위치에 저장할 수 있습니다.
  • 애플리케이션의 엔터프라이즈 번들 아카이브(EBA) 파일.
  • 서버 내부 OSGi 번들 저장소.
  • 외부 OSGi 번들 저장소.

애플리케이션 번들은 EBA 파일 또는 저장소에 저장할 수 있습니다. 공유 번들은 저장소에 저장됩니다. 그렇지 않은 경우 공유할 수 없습니다.

저장소에서 번들을 가져오는 프로세스를 프로비저닝이라고 합니다. 프로비저닝을 위해 다음과 같은 용어가 번들에 사용됩니다.
참조 번들
참조 번들은 애플리케이션 Manifest에서 참조하며 저장소에 저장되는 번들입니다.
종속 번들
종속 번들은 애플리케이션 Manifest에서 참조하지는 않지만 애플리케이션 Manifest 또는 다른 종속 번들에서 참조하는 번들에서 사용하는 번들입니다.

EBA 파일에 직접 포함되지 않는 애플리케이션 번들은 인스턴스별 참조 번들입니다. 사용 번들은 공유되는 참조 번들입니다. 프로비전 번들은 공유되는 종속 번들입니다.

OSGi 번들 Manifest 파일

OSGi 번들 JAR 파일은 JAR Manifest 파일을 포함합니다. 이 파일은 OSGi 프레임워크에서 번들의 모듈 측면을 처리할 수 있도록 하는 메타데이터를 포함합니다.

다음 코드는 번들 Manifest 파일, META-INF/MANIFEST.MF의 컨텐츠에 대한 예제입니다.
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: MyService bundle
Bundle-SymbolicName: com.sample.myservice
Bundle-Version: 1.0.0
Bundle-Activator: com.sample.myservice.Activator
Import-Package: org.apache.commons.logging;version="1.0.4"
Export-EJB: ExampleBean
Export-Package: com.sample.myservice.api;version="1.0.0"
이 Manifest 파일에서 메타데이터는 다음과 같은 핵심 특성을 포함합니다.
Bundle-Version
번들의 버전을 설명하고 번들의 여러 버전을 동일한 프레임워크 인스턴스에서 동시에 활성화할 수 있게 합니다.
Bundle-Name
번들의 판독 가능한 이름을 제공합니다.
Bundle-SymbolicName
프레임워크에서 번들을 고유하게 식별합니다. Bundle-Name 헤더가 필요한 상황을 대체하지는 않습니다.
Bundle-Activator
번들 라이프사이클 변경사항에 대한 알림을 프레임워크에서 수신합니다. 이 특성은 org.osgi.framework.BundleActivator 인터페이스를 구현하는 클래스를 지정합니다.
Import-Package
번들 분석을 위해 OSGi 프레임워크에서 사용하는 번들의 외부 종속성을 선언합니다. 각 패키지의 특정 버전 또는 버전 범위를 선언할 수 있습니다. 이 예제 Manifest 파일에서는 버전 1.0.4 이상의 org.apache.commons.logging 패키지가 필요합니다.
이 특성을 사용하여 런타임에서 번들을 가져오려는 패키지 이름을 지정하십시오. 이 특성에서 번들에 필요한 패키지를 지정하지 않으면 번들을 로드할 때 컴파일 오류가 발생할 수 있습니다.
NoteColonSymbol 또한 패키지를 포함하는 번들의 Export-Package 특성에서 이 패키지를 지정해야 합니다.
RestrictionColonSymbol 번들 Manifest 파일이 작업공간 또는 대상 플랫폼에 없는 번들의 번들 종속 항목을 선언하기 위해 Import-Package 특성을 사용하는 경우 편집기는 이 종속 항목을 오류로 표시합니다. 이 제한사항을 임시로 해결하려면 종속 항목으로 선언하는 모든 번들이 작업공간에 있는지를 확인하거나 빠른 수정사항을 사용하여 대상 플랫폼에 번들을 추가하십시오. 빠른 수정사항을 사용하려면 마커 보기로 전환한 다음 오류 마커를 마우스 오른쪽 단추로 클릭하고 빠른 수정사항을 선택하십시오.
ImportantColonSymbol MANIFEST.MF 파일에서 번들 종속 항목을 지정할 때 Require-bundle 대신에 특성 Import-Package를 사용하십시오. 번들 종속 항목을 지정하기 위해 Require-bundle을 사용하는 경우 애플리케이션은 배치되지 않습니다.
Import-Package는 종속 항목을 선언하기 위한 더 유연한 방법입니다.
  • 번들에서 요구되지는 않지만 종속 번들에는 포함되는 불필요한 종속 항목은 패키지에 추가하지 않기 때문에 이 방법에서는 기능이 시작된 번들에서가 아닌 사용자에게 필요한 기능에서 종속 항목을 선언할 수 있습니다.
  • 선언된 패키지에 대해 버전 또는 버전 번호를 지정할 수 있기 때문에 다른 버전의 번들에서 변경이 있을 경우 대응할 필요가 없습니다.
Export-EJB:
EJB 프로젝트가 OSGi 번들로 변환되는 경우 Export-EJB 섹션이 Manifest에 추가됩니다. 이 섹션을 사용하여 공개하려는 EJB를 나열하십시오. 수동으로 편집하거나 변환된 EJB 프로젝트를 마우스 오른쪽 단추로 클릭하고 OSGi > EJB 내보내기 관리를 선택하여 이 섹션에 EJB를 추가할 수 있습니다.
Export-Package
번들 외부에서 볼 수 있는 패키지를 선언합니다. 여기에 선언되지 않은 패키지는 번들에서만 볼 수 있습니다.
이 특성을 사용하여 런타임에 번들을 내보내려는 패키지 이름을 지정하십시오. 이 특성의 다른 번들에 필요한 패키지를 지정하지 않는 경우 종속 번들이 해결되지 않을 수도 있습니다.

번들 라이프사이클

프레임워크는 번들의 라이프사이클을 관리합니다. 번들을 설치하고 실행할 때 다양한 상태를 거치게 됩니다.

번들의 가능한 상태는 다음과 같습니다.
INSTALLED
번들이 설치되지만 번들의 일부 종속성이 만족되지 않습니다. 번들에는 현재 설치된 번들이 내보내지 않은 패키지가 필요합니다.
RESOLVED
번들이 설치되고 번들의 종속성이 만족되었지만 실행되지 않습니다. 번들이 시작되고 번들의 모든 종속성이 만족되었지만 번들이 이 상태를 건너뜁니다.
STARTING
번들이 시작되는 중에 번들이 경유하는 임시 상태입니다.
ACTIVE
번들이 실행 중입니다.
STOPPING
번들이 중지되는 중에 번들이 경유하는 임시 상태입니다.
UNINSTALLED
번들이 더 이상 프레임워크에 존재하지 않습니다.
주제 유형을 표시하는 아이콘 개념 주제
Information Center의 이용 약관 | 피드백

시간소인 아이콘 마지막 업데이트 날짜: 2014-05-22

파일 이름: cbundles.html