버전 3.1 - 최종 수정 날짜: 2005년 6월 20일
번들은 META-INF/MANIFEST.MF라고 하는 Manifest 파일로 자체에 대한 설명 정보를 전달합니다. OSGi R4 프레임워크 스펙은 번들 개발자가 번들에 대한 설명 정보를 제공하기 위해 사용하는 Export-Package 및 Bundle-Classpath와 같은 Manifest 헤더 세트를 정의합니다. Eclipse OSGi 프레임워크는 전체 OSGi R4 프레임워크 스펙과 모든 코어 프레임워크 서비스를 구현합니다. OSGi R4 코어 프레임워크 서비스에는 다음이 포함됩니다.
OSGi R4 스펙에는 여러 개의 선택적 서비스가 정의되어 있습니다. Eclipse OSGi 프레임워크 구현에서는 선택적 서비스가 포함되지 않습니다. OSGi R4 Manifest 헤더 및 서비스에 관한 정보는 OSGi 스펙을 참조하십시오.
Eclipse OSGi 프레임워크는 다양한 추가 번들 Manifest 헤더 및 지시문을 지원합니다. 번들 개발자는 이 추가 헤더 및 지시문을 사용하여 표준 OSGi R4 프레임워크의 일부로 지정되지 않은 Eclipse OSGi 프레임워크의 일부 추가 기능을 이용할 수 있습니다.
Eclipse OSGi 프레임워크는 Export-Package 헤더에서 추가 지시문을 지원합니다. 이 지시문은 내보낸 패키지의 액세스 제한사항 규칙을 지정하는 데 사용됩니다. 런타임 시 액세스 제한사항 규칙을 시행하도록 Eclipse OSGi 프레임워크를 구성하려면 osgi.resolverMode를 참조하십시오.
x-internal 지시문은 패키지가 내부 패키지인지 여부를 지정하기 위해 Export-Package 헤더에서 사용할 수 있습니다. 플러그인 개발 환경은 다른 번들이 내부 패키지를 사용하지 못하도록 합니다. x-internal 지시문을 지정하지 않으면 기본값인 'false'가 사용됩니다. x-internal 지시문은 다음 구문을 사용해야 합니다.
x-internal ::= ( 'true' | 'false' )
다음은 x-internal 지시문의 예제입니다.
Export-Package: org.eclipse.foo.internal; x-internal:=true
x-friends 지시문은 패키지에 액세스할 수 있는 번들의 목록을 지정하기 위해 Export-Package 헤더에서 사용할 수 있습니다. 플러그인 개발 환경은 다른 번들이 패키지를 사용하지 못하도록 합니다. x-friends 지시문은 다음 구문을 사용해야 합니다.
x-friends ::= '"' ( target-bundle ) ( ',' target-bundle ) * '"' target-bundle ::= a bundle symbolic name
다음은 x-friends 지시문의 예제입니다.
Export-Package: org.eclipse.foo.formyfriends; x-friends:="org.eclispe.foo.friend1, org.eclipse.foo.friend2"
예제는 번들 org.eclispe.foo.friend1 및 org.eclipse.foo.friend2만 org.eclipse.foo.formyfriends 패키지를 사용해야 함을 지정합니다. x-internal 패키지는 x-friends 지시문보다 우선합니다. x-internal 지시문이 'true'를 지정할 경우 플러그인 개발 환경은 모든 번들이 일원으로 지정된 경우에도 패키지를 사용하지 못하도록 합니다.
Eclipse-AutoStart 헤더는 번들에서 첫 번째 클래스 또는 자원에 액세스하기 전에 자동으로 해당 번들을 시작해야 하는지 여부를 지정하는 데 사용됩니다. 이 기능으로 Eclipse는 처음 번들이 필요할 때 요구 시 번들을 활성화할 수 있습니다. 이 모델을 사용할 경우 Eclipse는 가능한 적은 활성 번들을 시작할 수 있습니다. Eclipse-AutoStart 헤더는 다음 구문을 사용해야 합니다.
Eclipse-AutoStart ::= ( 'true' | 'false' ) ( ';' 'exceptions' '=' '"' exceptions-list '"' ) ? exceptions-list ::= a comma ',' separated list of packages
'exceptions' 속성은 클래스나 자원이 로드될 때 번들이 활성화되지 않도록 해야 하는 패키지의 목록을 지정하는 데 사용됩니다. 번들 Manifest에 Eclipse-AutoStart 헤더를 정의하지 않으면 기본값인 'false'가 사용됩니다. 다음은 Eclipse-AutoStart 헤더의 예제입니다.
Eclipse-AutoStart: true; exceptions="org.eclipse.foo1, org.eclipse.foo2"
예제는 번들이 'org.eclipse.foo1' 및 'org.eclipse.foo2' 패키지의 클래스 및 자원을 제외하고 이 번들에서 로드되는 클래스나 자원에 대해 활성되어야 함을 지정합니다.
Eclipse-PlatformFilter는 번들에 대한 플랫폼 필터를 지정하는 데 사용됩니다. 번들을 분석할 수 있으려면 실행 중인 플랫폼에서 플랫폼 필터가 true로 평가되어야 합니다. Eclipse-PlatformFilter 헤더는 다음 구문을 사용해야 합니다.
Eclipse-PlatformFilter ::= a valid LDAP filter string
프레임워크는 다음 시스템 특성에 대한 필터링을 지원합니다.
다음은 Eclipse-PlatformFilter 헤더의 예제입니다.
Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86))
이 예제는 플랫폼 특성이 osgi.ws=win32, osgi.os=win32 및 osgi.arch=x86일 경우에만 번들을 분석할 수 있음을 지정합니다. 즉, x86 아키텍처에서 실행 중인 플랫폼은 win32 운영 체제와 win32 윈도윙 시스템을 사용합니다.
Eclipse-BuddyPolicy 헤더는 번들의 버디 클래스 로드 정책을 지정하는 데 사용됩니다. Eclipse-BuddyPolicy 헤더는 다음 구문을 사용해야 합니다.
Eclipse-BuddyPolicy ::= ( policy-name ) ( ',' policy-name ) * policy-name ::= ( 'dependent' | 'global' | 'registered' | 'app' | 'ext' | 'boot' | 'parent' )
다음은 Eclipse-BuddyPolicy 헤더의 예제입니다.
Eclipse-BuddyPolicy: dependent
Eclipse-RegisterBuddy 헤더는 해당 번들이 등록된 버디인 번들 목록을 지정하는 데 사용됩니다. Eclipse-RegisterBuddy 헤더는 다음 구문을 사용해야 합니다.
Eclipse-RegisterBuddy ::= ( target-bundle ) ( ',' target-bundle ) * target-bundle ::= a bundle symbolic name
다음은 Eclipse-RegisterBuddy 헤더의 예제입니다.
Eclipse-RegisterBuddy: org.eclipse.foo.bundle1, org.eclipse.foo.bundle2
Eclipse-ExtensibleAPI는 단편 번들이 추가 API를 호스트에 추가하는 것을 호스트 번들이 허용하는지 여부를 지정하는 데 사용됩니다. 이 헤더는 단편 번들이 추가 패키지를 호스트 API에 추가하는 것을 호스트 번들이 허용할 경우에 사용해야 합니다. 이 헤더를 지정하지 않을 경우 기본값 'false'가 사용됩니다. Eclipse-ExtensibleAPI 헤더는 다음 구문을 사용해야 합니다.
Eclipse-ExtensibleAPI ::= ( 'true' | 'false' )
다음은 Eclipse-ExtensibleAPI 헤더의 예제입니다.
Eclipse-ExtensibleAPI: true
Plugin-Class 헤더는 Eclipse 2.1 플랫폼용으로 개발된 플러그인을 지원할 경우에만 사용됩니다. 이 헤더는 이전 Eclipse 2.1 활성화 모델을 사용하여 플러그인을 활성화하는 데 사용할 클래스 이름을 지정하기 위해 사용됩니다. Eclipse 3.0 이상 플랫폼용으로 개발된 새 번들은 이 헤더를 사용할 수 없습니다. 다음은 Plugin-Class 헤더의 예제입니다.
Plugin-Class: org.eclipse.foo.FooPlugin