Verze 3.1 - Poslední revize 20.června 2005
Balík může obsahovat popisné informace o sobě, uložené v souboru s manifestem nazvaném META-INF/MANIFEST.MF. Specifikace OSGi R4 Framework definuje sadu záhlaví manifestu, např. Export-Package a Bundle-Classpath, která mohou vývojáři balíků používat, když potřebují dodat popisné informace ke konkrétnímu balíku. OSGi Framework platformy Eclipse implementuje kompletní specifikaci OSGi R4 Framework a všechny služby jádra struktury Framework. Mezi služby jádra struktury OSGi R4 Framework patří:
V rámci specifikace OSGi R4 je definována i řada volitelných služeb. Volitelné služby nejsou součástí implementace struktury OSGi Framework platformy Eclipse. Další informace o záhlavích manifestu OSGi R4 a službách najdete pod tématem Specifikace OSGi R4.
Struktura OSGi Framework platformy Eclipse podporuje celou řadu dalších direktiv i záhlaví manifestu balíku. Tato další záhlaví a direktivy jsou k dispozici vývojářům, kteří tak mohou těžit z dalších funkcí struktury OSGi Framework platformy Eclipse, které nejsou specifikovány jako součást standardní struktury OSGi R4 Framework.
Struktura OSGi Framework platformy Eclipse podporuje další direktivy pro záhlaví Export-Package. Tyto direktivy se používají k určení pravidel omezení přístupu exportovaného balíčku. Viz téma osgi.resolverMode, kde najdete informace o konfiguraci struktury OSGi Framework platformy Eclipse pro vynucení pravidel omezení přístupu v době běhu programu.
Pomocí direktivy x-internal je možné v záhlaví Export-Package určit, zda je balíček interní. Vývojové prostředí modulů plug-in bude další balíky odrazovat od toho, aby interní balíček používaly. Pokud direktiva x-internal není zadána, použije se výchozí hodnota 'false'. Direktiva x-internal má následující syntaxi:
x-internal ::= ( 'true' | 'false' )
Následuje příklad direktivy x-internal:
Export-Package: org.eclipse.foo.internal; x-internal:=true
Pomocí direktivy x-friends je možné v záhlaví Export-Package určit seznam balíků, které mají k balíčku povolen přístup. Vývojové prostředí modulů plug-in bude ostatní balíky odrazovat od toho, aby tento balíček používaly. Direktiva x-friends má následující syntaxi:
x-friends ::= '"' ( cílový-balík ) ( ',' cílový-balík ) * '"' cílový-balík ::= symbolický název balíku
Následuje příklad direktivy x-friends:
Export-Package: org.eclipse.foo.formyfriends; x-friends:="org.eclispe.foo.friend1, org.eclipse.foo.friend2"
Výše uvedený příklad ukazuje, že balíček org.eclipse.foo.formyfriends by měly používat pouze balíky org.eclispe.foo.friend1 a org.eclipse.foo.friend2. Direktiva x-internal má vyšší prioritu než direktiva x-friends. Pokud je direktiva x-internal nastavena na 'true', pak bude vývojové prostředí modulů plug-in všechny balíky od používání tohoto balíčku odrazovat, a to i v případě, že jsou určeny jako friend.
Záhlaví Eclipse-AutoStart určuje, zda se má balík automaticky spouštět před tím, než dojde k prvnímu přístupu ke třídě nebo k prostředku z daného balíku. Díky této funkci může platforma Eclipse aktivovat balíky na vyžádání ve chvíli, kdy jsou poprvé potřeba. Při použití tohoto modelu se může Eclipse spouštět s nejmenším možným počtem aktivních balíků. Záhlaví Eclipse-AutoStart má následující syntaxi:
Eclipse-AutoStart ::= ( 'true' | 'false' ) ( ';' 'exceptions' '=' '"' seznam-výjimek '"' ) ? exceptions-list ::= čárkou ',' oddělený seznam balíčků
Atribut 'exceptions' se používá k určení seznamu balíčků, které nesmí způsobit aktivaci balíku ve chvíli, kdy se z nich načítají třídy nebo prostředky. Pokud záhlaví Eclipse-AutoStart není v manifestu balíku definováno, použije se výchozí hodnota 'false'. Následuje příklad záhlaví Eclipse-AutoStart:
Eclipse-AutoStart: true; exceptions="org.eclipse.foo1, org.eclipse.foo2"
Příklad určuje, že tento balík musí být aktivován pro všechny třídy a prostředky načtené z tohoto balíku, s výjimkou tříd a prostředků v balíčcích 'org.eclipse.foo1' a 'org.eclipse.foo2'.
Eclipse-PlatformFilter se používá k určení filtru platformy pro balík. Pokud se má povolit rozeznání daného balíku, filtr platformy musí být u spuštěné platformy vyhodnocen jako true. Záhlaví Eclipse-PlatformFilter má následující syntaxi:
Eclipse-PlatformFilter ::= platný řetězec filtru LDAP
Framework podporuje filtrování na následujících vlastnostech systému:
Následuje příklad záhlaví Eclipse-PlatformFilter:
Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86))
Tento příklad určuje, že daný balík může být vyřešen pouze v případě, že vlastnosti platformy jsou osgi.ws=win32 a osgi.os=win32 a osgi.arch=x86. Jinými slovy, musí se jednat o platformu běžící na architektuře x86, používající operační systém win32 a systém oken win32.
Záhlaví Eclipse-BuddyPolicy se používá k určení zásad načítání tříd buddy pro daný balík. Záhlaví Eclipse-BuddyPolicy má následující syntaxi:
Eclipse-BuddyPolicy ::= ( název-zásady ) ( ',' název-zásady ) * název-zásady ::= ( 'dependent' | 'global' | 'registered' | 'app' | 'ext' | 'boot' | 'parent' )
Následuje příklad záhlaví Eclipse-BuddyPolicy:
Eclipse-BuddyPolicy: dependent
Záhlaví Eclipse-RegisterBuddy se používá k určení seznamu balíků, pro který bude tento balík registrovaným buddy. Záhlaví Eclipse-RegisterBuddy má následující syntaxi:
Eclipse-RegisterBuddy ::= ( cílový-balík ) ( ',' cílový-balík ) * cílový-balík ::= symbolický název balíku
Následuje příklad záhlaví Eclipse-RegisterBuddy:
Eclipse-RegisterBuddy: org.eclipse.foo.bundle1, org.eclipse.foo.bundle2
Eclipse-ExtensibleAPI určuje, zda hostitelský balík umožňuje dílčím balíkům přidávat další rozhraní API do hostitele. Toto záhlaví by se mělo použít v případě, kdy hostitelský balík chce povolit dílčím balíkům přidávat další balíčky do rozhraní API hostitele. Pokud toto záhlaví není zadáno, použije se výchozí hodnota 'false'. Záhlaví Eclipse-ExtensibleAPI má následující syntaxi:
Eclipse-ExtensibleAPI ::= ( 'true' | 'false' )
Následuje příklad záhlaví Eclipse-ExtensibleAPI:
Eclipse-ExtensibleAPI: true
Záhlaví Plugin-Class se používá pouze pro podporu modulů plug-in vyvinutých pro platformu Eclipse 2.1. Toto záhlaví se používá k určení názvu třídy, která bude použita k aktivaci modulu plug-in za použití starého modelu aktivace platformy Eclipse 2.1. Nové balíky vyvinuté pro platformu Eclipse verze 3.0 nebo vyšší by toto záhlaví neměly používat. Následuje příklad záhlaví Plugin-Class:
Plugin-Class: org.eclipse.foo.FooPlugin