3.1 verzió - Utolsó felülvizsgálat: 2005. június 20.
A köteg saját magával kapcsolatos leíró információkat tárolhat a META-INF/MANIFEST.MF nevű leírófájlban. Az OSGi R4 keretrendszer-specifikáció megad egy leírófájl-fejléc halmazt, mint például az Export-Package és Bundle-Classpath, amelyeket a kötegfejlesztők használnak a köteggel kapcsolatos leíróinformációk biztosításához. Az Eclipse OSGi keretrendszer a teljes OSGi R4 keretrendszer-specifikációt valamint az összes Központi keretrendszer szolgáltatást megvalósítja. Az OSGi R4 Központi keretrendszer szolgáltatások az alábbiak:
Az OSGi R4 specifikációban számos választható szolgáltatás meg van adva. A választható szolgáltatásokat az Eclipse OSGi keretrendszer megvalósítás nem tartalmazza. Az OSGi R4 leírófájl-fejlécekkel és szolgáltatásokkal kapcsolatos információkat az OSGi specifikáció tartalmaz.
Az Eclipse OSGi keretrendszer számos kiegészítő kötegleíró-fejlécet és direktívát támogat. A kötegfejlesztő ezen kiegészítő fejlécek és direktívák segítségével kihasználhatja az Eclipse OSGi keretrendszer néhány kiegészítő szolgáltatásának előnyét, amelyek nem a szabványos OSGi R4 keretrendszer részei.
Az Eclipse OSGi keretrendszer további direktívákat is támogat az Export-Package fejlécen. Ezek a direktívák megadják az exportált csomag hozzáférés-korlátozási szabályait. Tekintse meg az osgi.resolverMode fájlt annak megismeréséhez, hogy az Eclipse OSGi keretrendszer hogyan állítható be úgy, hogy futáskor kikényszerítse a hozzáférés-korlátozási szabályokat.
Az x-internal direktíva Export-Package fejlécben használható annak megadásához, hogy a csomag belső csomag-e. A Bedolgozó fejlesztői környezet megakadályozza, hogy más kötegek belső csomagot használjanak. Ha az x-internal direktíva nincs megadva, akkor az alapértelmezett 'false' érték kerül alkalmazásra. Az x-internal direktívának az alábbi szintaxist kell használnia:
x-internal ::= ( 'true' | 'false' )
Az alábbi egy példa x-internal direktívára:
Export-Package: org.eclipse.foo.internal; x-internal:=true
Az x-friends direktíva Export-Package fejlécben használható a kötegek listájának megadásához, amelyek hozzáférhetnek a csomaghoz. A Bedolgozó fejlesztői környezet megakadályozza, hogy más köteg használja a csomagot. Az x-friends direktíva szintaxisa az alábbi:
x-friends ::= '"' ( target-bundle ) ( ',' target-bundle ) * '"' target-bundle ::= egy szimbolikus kötegnév
Az alábbi egy x-friends direktívára példa:
Export-Package: org.eclipse.foo.formyfriends; x-friends:="org.eclipse.foo.friend1, org.eclipse.foo.friend2"
A példa megadja, hogy csak az org.eclipse.foo.friend1 és org.eclipse.foo.friend2 köteg használhatja az org.eclipse.foo.formyfriends csomagot. Az x-internal csomagnak az x-friends direktívával szemben prioritása van. Ha az x-internal direktíva 'true' értéket ad meg, akkor a Bedolgozó fejlesztői környezet megakadályozza, hogy bármely köteg elérje a csomagot még abban esetben is, ha "friend"-ként meg vannak adva.
Az Eclipse-LazyStart fejléc megadja, hogy egy köteget automatikusan el kell-e indítani, mielőtt a köteg az első osztályhoz vagy csomaghoz hozzáfér. Ez a szolgáltatás lehetővé teszi, hogy az Eclipse a köteget késleltetetten aktiválja, amikor először szükség van rá. Ezen modellel az Eclipse a lehető legkevesebb aktív köteggel indulhat el. Az Eclipse-LazyStart fejléc szintaxisa:
Eclipse-LazyStart ::= ( 'true' | 'false' ) ( ';' 'exceptions' '=' '"' kivétel-lista '"' ) ? exceptions-list ::= csomagok vesszővel ',' elválasztott listája
Az 'exceptions' attribútum megadja a csomagok listáját, amelyek nem aktiválhatják a köteget az osztályok vagy erőforrások betöltésekor. Ha az Eclipse-LazyStart fejléc a kötegleíróban nincs megadva, akkor az alapértelmezett 'false' érték kerül alkalmazásra. Az alábbi az Eclipse-LazyStart fejlécre példa:
Eclipse-LazyStart: true; exceptions="org.eclipse.foo1, org.eclipse.foo2"
A példa megadja, hogy ezt a köteget aktiválni kell minden osztályhoz vagy erőforráshoz, amely ebből a kötegből kerül betöltésre, az 'org.eclipse.foo1' és 'org.eclipse.foo2' csomagban lévő osztályokat és erőforrásokat kivéve.
Az Eclipse 3.2 változatában az Eclipse-AutoStart fejléc elévült. Helyette az Eclipse-LazyStart fejléc használható.
Az Eclipse-PlatformFilter megadja egy köteg platformszűrőjét. A platformszűrőt egy futó platformon true értékre kell kiértékelni ahhoz, hogy a köteg feloldható legyen. Az Eclipse-PlatformFilter fejléc szintaxisa:
Eclipse-PlatformFilter ::= egy érvényes LDAP szűrő karaktersorozat
A keretrendszer az alábbi rendszertulajdonságok szűrését támogatja:
Az alábbi Eclipse-PlatformFilter fejlécre példa:
Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86))
A példa megadja, hogy ez a köteg csak akkor oldható fel, ha a platformtulajdonságok a következők: osgi.ws=win32, osgi.os=win32 és osgi.arch=x86. Más szavakkal: x86 architektúrán futó platform, amely win32 operációs rendszer és win32 ablakkezelő rendszert használ.
Az Eclipse-BuddyPolicy fejléc a köteg buddy osztálybetöltési stratégiáit adja meg. Az Eclipse-BuddyPolicy fejléc szintaxisa:
Eclipse-BuddyPolicy ::= ( policy-name ) ( ',' policy-name ) * policy-name ::= ( 'dependent' | 'global' | 'registered' | 'app' | 'ext' | 'boot' | 'parent' )
Az alábbi az Eclipse-BuddyPolicy fejlécre példa:
Eclipse-BuddyPolicy: dependent
Az Eclipse-RegisterBuddy fejléc egy köteglistát ad meg, amelyhez ez a köteg bejegyzett "buddy". Az Eclipse-RegisterBuddy fejléc szintaxisa:
Eclipse-RegisterBuddy ::= ( target-bundle ) ( ',' target-bundle ) * target-bundle ::= egy szimbolikus kötegnév
A következő az Eclipse-RegisterBuddy fejlécre példa:
Eclipse-RegisterBuddy: org.eclipse.foo.bundle1, org.eclipse.foo.bundle2
Az Eclipse-ExtensibleAPI megadja, hogy a hosztköteg lehetővé teszi-e, hogy a töredékkötegek további alkalmazás programozási felületet adhassanak a hoszthoz. A fejlécet akkor kell használni, ha a hosztköteg lehetővé kívánja tenni, hogy a töredékek további csomagokat adhassanak a hoszt alkalmazás programozási felületéhez. Ha a fejléc nincs megadva, akkor az alapértelmezett 'false' érték kerül alkalmazásra. Az Eclipse-ExtensibleAPI fejléc szintaxisa:
Eclipse-ExtensibleAPI ::= ( 'true' | 'false' )
Az alábbi az Eclipse-ExtensibleAPI fejlécre példa:
Eclipse-ExtensibleAPI: true
Az Eclipse-GenericCapability fejléc segítségével határozható meg a csomagok általános képessége. Az általános képességek segítségével írhatók le a köteg azon szolgáltatásai, amelyek a rendszer egyéb kötegei számára szükségesek lehetnek (az Eclipse-GenericRequire fejléc segítségével). Az általános képességek nevet és képességtípust kapnak. A képességtípusokat a képességet biztosító köteg határozza meg. A képességek ezen kívül rendelkezhetnek típusos megfeleltetési attribútumok egy halmazával, amelyekkel a rendszer egyeztet az Eclipse-GenericRequire fejlécek feloldása során. A megfeleltetési attribútumok az alábbi típusúak lehetnek: [string | version | uri | long | double | set]. A halmaztípus segítségével karaktersorozatok egy halmaza határozható meg, karaktersorozatok vesszőkkel elválasztott listájaként. Az Eclipse-GenericCapability fejléc szintaxisa:
Eclipse-GenericCapability ::= képesség ( ',' képesség ) * capability ::= típusos név ( ';' típusos név ) * ( ';' típusos paraméter ) * typed-name ::= név ( ':' képességtípus ) typed-param ::= típusos kulcs '=' idézett karaktersorozat typed-key ::= név ( ':' [string | version | uri | long | double | set] )
Az alábbiakban bemutatott Eclipse-GenericCapabilty minta-fejléc, amelynek segítségével egy köteg megadható egy OSGi szolgáltatás org.acme.stuff.SomeService megvalósításhoz:
Eclipse-GenericCapability: org.acme.stuff.SomeService:osgi.service; version:version="1.0.1"
Az Eclipse-GenericRequire fejléc segítségével megadható egy másik köteg által (az Eclipse-GenericCapability fejléc segítségével) biztosított általános képességre vonatkozó követelmény. Az általános követelmények nevet és képességtípust kapnak. A képességtípusokat a képességet biztosító köteg határozza meg. Az általános követelmények megadhatnak egy LDAP szűrő-karaktersorozatot, amelyet a rendszer a megfelelő általános képességek feloldása során kijelölő szűrőként használ. Az Eclipse-GenericRequire fejléc szintaxisa:
Eclipse-GenericRequire ::= általános-követelmény ( ',' általános-követelmény ) * generic-require ::= típusos-név ( ';' típusos-név ) * ( ';' kijelölési-szűrő '=' idézett-ldapSzűrő ) ( ';' elhagyható '=' [true|false] ) ( ';' többszörös '=' [true|false] ) typed-name ::= név ( ':' képesség-típus )
Az alábbiakban bemutatott Eclipse-GenericRequire minta-fejléc segítségével megadható egy OSGi szolgáltatás org.acme.stuff.SomeService megvalósításon alapuló köteg:
Eclipse-GenericRequire: org.acme.stuff.SomeService:osgi.service; selection-filter="(version>=1.0.1)"
Az osgi.genericAliases beállítás segítségével a meglévő OSGi leírófájl-fejlécek az Eclipse-GenericCapability és az Eclipse-GenericRequire leírófájl-fejléceire leképezhetők. Tekintse meg például az alábbi leírófájl-fejlécet:
Export-Service: org.acme.stuff.SomeService Import-Service: org.acme.stuff.SomeService
A fejlécek az Eclipse-GenericCapability és Eclipse-GenericRequire fejlécekre a következő tulajdonság segítségével képezhetők le:
osgi.genericAliases=Export-Service:Import-Service:osgi.service
A háttérben ez a következő általános fejlécekké kerül lefordításra:
Eclipse-GenericRequire: org.acme.stuff.SomeService:osgi.service Eclipse-GenericCapability: org.acme.stuff.SomeService:osgi.service
A Plugin-Class fejléc támogatja az Eclipse 2.1 platformhoz fejlesztett bedolgozókat. A fejléc megad egy osztálynevet, amely a régi Eclipse 2.1 aktiválási modellel aktiválja a bedolgozót. Az Eclipse 3.0 vagy újabb változathoz fejlesztett kötegeknek nem kell használniuk ezt a fejlécet. Az alábbi a Plugin-Class fejlécre példa:
Plugin-Class: org.eclipse.foo.FooPlugin