OSGi 애플리케이션

OSGi 애플리케이션은 번들 세트를 그룹화하여 일관적인 비즈니스 로직을 제공하게 합니다. 애플리케이션은 웹 사용 번들과 지속성 사용 번들과 같은 다양한 번들 유형으로 구성될 수 있습니다.

한 OSGi 애플리케이션의 번들은 번들, 서비스 또는 패키지가 두 애플리케이션에서 명시적으로 공유되지 않는 한, 다른 OSGi 애플리케이션에 정의된 번들, 서비스 또는 패키지와 분리됩니다. OSGi 애플리케이션은 OSGi 번들을 직접 포함하거나 OSGi 번들 저장소에 호스팅된 번들을 참조할 수 있습니다.

애플리케이션에서 OSGi 번들은 다른 OSGi 애플리케이션과 서비스를 공유할 수 있습니다. OSGi 애플리케이션이 외부 서비스 및 참조를 생성하는 경우 애플리케이션 Manifest에서 이들을 선언하여 명시적으로 공개합니다. 유사한 방식으로 OSGi 애플리케이션이 이용하는 외부 서비스 및 참조는 애플리케이션 Manifest에서 선언됩니다. 또한 OSGi 애플리케이션은 메타데이터를 사용하여 시스템에서 구성 번들 일부를 공유하도록 설정할 수 있습니다. 이와 같은 방식으로 공유하면 시스템의 메모리 및 자원 요구사항이 줄어듭니다.

OSGi 애플리케이션은 다음을 포함합니다.
아카이브 컨텐츠
애플리케이션 Manifest
배치 Manifest

아카이브 컨텐츠

아카이브 컨텐츠는 Application-Content 헤더가 애플리케이션 Manifest에 정의되어 있는지 여부에 따라 서로 다른 두 가지 방식으로 사용됩니다.
  • Application-Content 헤더가 정의되지 않으면 아카이브 컨텐츠는 OSGi 애플리케이션 컨텐츠를 정의합니다.
  • Application-Content 헤더가 정의되면 아카이브 컨텐츠는 번들이 프로비저닝될 수 있는 초기 번들 저장소를 정의합니다. 특정 버전의 번들이 제어되는 저장소에 설치되고 번들도 애플리케이션 아카이브에 포함되면 아카이브의 번들이 사용됩니다.

애플리케이션 Manifest

애플리케이션 Manifest, META-INF/APPLICATION.MF에서는 애플리케이션 레벨에서 모듈성을 설명합니다. 기본적으로 애플리케이션 Manifest가 선언되지 않은 경우 애플리케이션 컨텐츠는 OSGi 애플리케이션에 포함된 OSGi 번들 세트이며 외부 서비스나 참조는 생성되거나 이용되지 않습니다.

애플리케이션 Manifest에 포함될 수 있는 헤더는 다음과 같습니다.
Application-SymbolicName

Java와 유사한 패키지 표기법을 사용하는, OSGi 애플리케이션의 고유한 기호 이름입니다.

Application-Version

번들 버전에 대한 OSGi 구문을 사용하는 애플리케이션 버전입니다.

Application-Name

애플리케이션 이름.

Application-ImportService

번들 분석을 위해 OSGi 프레임워크에서 사용하는 번들의 외부 종속성을 선언합니다. 각 서비스의 특정 버전 또는 버전 범위를 선언할 수 있습니다.

애플리케이션이 이용하는 외부 서비스에 대한 필터 세트입니다. 애플리케이션 Manifest는 서비스에 필요한 클래스를 포함해야 합니다. 이 헤더가 지정되지 않으면 필수 서비스는 가져오지 않습니다.

쉼표로 구분된 목록에서 서비스 인터페이스 이름 뒤에 속성 또는 지시문이 나오는, 필수 서비스를 지정합니다.
<service identifier>;<directives>;<attributes>
예를 들어, 다음과 같습니다.
test.it;filter="some_filter"
Application-ImportService 헤더에는 다음 속성이 포함됩니다.
filter
OSGi 서비스 필터입니다.
Application-ExportService

번들 외부에서 볼 수 있는 서비스를 선언합니다. 여기에 선언되지 않은 서비스는 번들에서만 볼 수 있습니다.

애플리케이션이 생성하는 외부 서비스에 대한 필터 세트입니다. 헤더가 지정되지 않으면 필수 서비스는 내보내지 않습니다.

쉼표로 구분된 목록에서 서비스 인터페이스 이름 뒤에 속성 또는 지시문이 나오는, 내보낸 서비스를 지정합니다.
<service identifier>;<directives>;<attributes>
예를 들어, 다음과 같습니다.
test.it;filter="some_filter"
Application-ExportService 헤더에는 다음 속성이 포함됩니다.
filter
OSGi 서비스 필터입니다.
Use-Bundle

적어도 하나의 패키지를 애플리케이션 번들에 제공하는 공유 번들입니다.

Application-Content 목록에서 번들의 패키지 종속성을 충족시키는 데 사용할 번들 또는 컴포지트 번들 목록입니다. Use-Bundle 목록에 있는 각 번들 또는 컴포지트 번들은 Application-Content 목록에 있는 하나 이상의 번들에 하나 이상의 패키지를 제공해야 합니다. 이러한 번들은 런타임에 공유 번들 공간으로 프로비저닝됩니다.

보통 Use-Bundle 헤더가 필요하지 않지만 유용한 경우도 있습니다. 이는 공유가 가능한 레벨을 제한하는 데 사용할 수 있습니다. 예를 들어, 애플리케이션이 테스트하는 패키지 가져오기에 동일한 번들을 사용하는지 확인할 수 있습니다. 또는 두 애플리케이션이 패키지 가져오기에 동일한 번들을 사용하는지 확인할 수 있습니다. 애플리케이션 레벨에서 제한사항을 설정하여 번들의 유연성을 유지할 수 있습니다.

Application-WebModules

애플리케이션에 포함된 비OSGi 동적 웹 프로젝트의 목록입니다.

이 헤더는 OSGi 표준에 속하지 않습니다.

Application-Content
애플리케이션에 포함된 OSGi 버전 스펙의 허용 범위에서 컴포지트 번들, 번들 단편, 번들로 구성된 목록입니다.
TipColonSymbol Application-Content 목록에서 번들 단편을 포함하는 경우 단편에 대한 호스트 번들을 포함해야 합니다.
형식은 쉼표로 구분된 모듈 선언 목록입니다. 여기서, 각 모듈 선언에서 사용하는 형식은 다음과 같습니다.
<module identifier>;<directives>;<attributes>

일반적으로 모듈 ID는 번들의 기호 이름입니다. 번들이 아닌 자원을 참조하기 위해 모듈 ID는 OSGi 애플리케이션 루트에 상대적인 경로입니다.

Application-Content 헤더에는 다음 속성이 포함됩니다.
version
모듈 버전은 버전 범위에 대한 OSGi 구문을 사용하여 지정됩니다. 애플리케이션의 최소 버전과 뒤에 애플리케이션을 업그레이드할 수 있는 최대 버전을 지정합니다. 예를 들어 "[1.0.0,2.0.0)"은 버전 1.0.0 및 버전 2.0.0까지의 모든 이후 버전(단, 버전 2.0.0 제외)을 의미합니다.

Application-Content 헤더에는 비즈니스 서비스를 구성하는 중요한 애플리케이션만 정의되어 있고, 애플리케이션에 포함된 전체 번들 목록은 정의되어 있지 않습니다. 컨텐츠에 나열된 번들이 애플리케이션에 포함되지 않은 패키지를 사용하는 경우 종속성 분석이 수행되고 누락된 번들이 포함됩니다. 이러한 번들은 애플리케이션에 대한 외부에 존재하는 서비스를 제공할 수 없으며 이에 보안을 적용할 수 없습니다. 이 메커니즘을 사용하여 포함된 번들이 공유됩니다.

배치 Manifest

OSGi 애플리케이션이 설치된 경우 애플리케이션 Manifest는 애플리케이션을 구성하는 번들을 지정합니다. 일부 번들에 대해 둘 이상의 버전을 지정할 수 있습니다.

배치 Manifest인 META-INF/DEPLOYMENT.MF는 다음 종속성 분석에 필요한 번들을 포함하여 애플리케이션을 구성하는 모든 번들을 지정합니다. 배치 Manifest에서는 애플리케이션에 사용되는 각 번들의 실제 버전을 지정합니다. 엔터프라이즈 번들 아카이브(EBA) 자산이 설치된 경우 자동으로 작성되고 애플리케이션 서버를 시작할 때마다 애플리케이션을 구성하는 번들이 동일한지 확인합니다.

EBA는 단일 OSGi 애플리케이션으로 배치되고, 다른 OSGi 애플리케이션에서 분리된 OSGi 번들 세트를 정의합니다. EBA 파일은 파일 확장자가 .eba인 단일 아카이브 파일입니다. 이 파일은 애플리케이션 모듈 세트, 애플리케이션 Manifest 또는 둘 다를 포함합니다.

애플리케이션을 설치한 후 번들 버전은 EBA 자산을 구성하여 업데이트할 수 있습니다.

배치 Manifest에 포함될 수 있는 헤더는 다음과 같습니다.
Application-SymbolicName
Java와 유사한 패키지 표기법을 사용하는, 애플리케이션의 고유한 기호 이름입니다. 이는 애플리케이션 Manifest에서 Application-SymbolicName 값과 일치합니다.
Application-Version
번들 버전에 대한 OSGi 구문을 사용하는 애플리케이션 버전입니다. 이는 애플리케이션 Manifest에서 Application-Version 값과 일치합니다.
Deployed-Content

사용할 정확한 버전과 번들의 기호 이름을 쉼표로 분리한 목록입니다.

목록은 애플리케이션 Manifest의 Application-Content 헤더에 나열된 모든 번들 및 종속성 분석으로 가져온 번들을 포함합니다. 비OSGi 모듈 유형은 변환된 번들의 기호 이름을 사용하여 포함됩니다.

Deployed-Content 헤더에는 다음 지시문이 포함됩니다.
deployed-version
버전에 대한 OSGi 구문을 사용하여 지정된, 번들의 정확한 버전입니다.
주제 유형을 표시하는 아이콘 개념 주제
Information Center의 이용 약관 | 피드백

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

파일 이름: ceba.html