Versio 3.1 - Edellinen muutospäivämäärä: 20.6.2005
Resurssijoukko voi sisältää sitä itseään kuvaavaa tietoa META-INF/MANIFEST.MF-nimisessä manifest-tiedostossa. OSGi R4 -kehysmäärityksessä määritetään manifest-tiedoston ylätunnisteita (esimerkiksi ylätunnisteet Export-Package ja Bundle-Classpath), joiden avulla resurssijoukkojen kehittäjät voivat lisätä resurssijoukkoa kuvaavia tietoja. Eclipse OSGi -kehys toteuttaa koko OSGi R4 -kehysmäärityksen ja kaikki ydinkehyksen palvelut. OSGi R4 -ydinkehyspalveluja ovat seuraavat:
OSGi R4 -määritykseen sisältyy useita valinnaisia palveluja. Valinnaiset palvelut eivät sisälly Eclipse OSGi -kehyksen toteutukseen. Tietoja OSGi R4 -manifest-tiedoston ylätunnisteista ja palveluista on aiheessa OSGi-määritys.
Eclipse OSGi -kehys tukee useita resurssijoukon manifest-tiedoston lisäylätunnisteita ja -ohjauskoodeja. Näiden lisäylätunnisteiden ja -ohjauskoodien avulla resurssijoukon kehittäjä voi käyttää hyväksi joitakin Eclipse OSGi -kehyksen lisäominaisuuksia, joita ei ole määritetty osana OSGi R4 -vakiokehystä.
Eclipse OSGi -kehys tukee Export-Package-ylätunnisteen lisäohjauskoodeja. Näiden ohjauskoodien avulla määritetään viedyn paketin käyttörajoitussäännöt. Kohdassa osgi.resolverMode kerrotaan, miten Eclipse OSGi -kehys määritetään niin, että käyttörajoitussäännöt ovat voimassa ajon aikana.
X-internal-ohjauskoodin avulla voidaan Export-Package-ylätunnisteessa määrittää, onko kyseessä sisäinen paketti. Lisäosien kehitysympäristö (PDE) ohjaa muita resurssijoukkoja välttämään sisäisen paketin käyttöä. Jos x-internal-ohjauskoodia ei määritetä, käytetään oletusarvoa false. X-internal-ohjauskoodissa täytyy käyttää seuraavaa syntaksia:
x-internal ::= ( 'true' | 'false' )
Seuraavassa on esimerkki x-internal-ohjauskoodista:
Export-Package: org.eclipse.foo.internal; x-internal:=true
X-friends-ohjauskoodin avulla voidaan Export-Package-ylätunnisteessa määrittää resurssijoukot, jotka saavat käyttää pakettia. Lisäosien kehitysympäristö ohjaa muita resurssijoukkoja välttämään paketin käyttöä. X-friends-ohjauskoodissa täytyy käyttää seuraavaa syntaksia:
x-friends ::= '"' ( target-bundle ) ( ',' target-bundle ) * '"' target-bundle ::= resurssijoukon symbolinen nimi
Seuraavassa on esimerkki x-friends-ohjauskoodista:
Export-Package: org.eclipse.foo.formyfriends; x-friends:="org.eclipse.foo.friend1, org.eclipse.foo.friend2"
Esimerkissä määritetään, että vain resurssijoukkoja org.eclipse.foo.friend1 ja org.eclipse.foo.friend2 tuetaan käyttämään org.eclipse.foo.formyfriends-pakettia. X-internal-paketti on tärkeysjärjestyksessä x-friends-ohjauskoodin edellä. Jos x-internal-ohjauskoodissa määritetään arvo true, lisäosien kehitysympäristö ohjaa kaikkia resurssijoukkoja välttämään paketin käyttöä, vaikka ne olisikin määritetty ystäviksi.
Eclipse-LazyStart-ylätunnisteen avulla määritetään, käynnistetäänkö resurssijoukko automaattisesti ennen kyseisen resurssijoukon ensimmäisen luokan tai resurssin käyttöä. Tämän ominaisuuden ansiosta Eclipse voi aktivoida resurssijoukkoja silloin, kun niitä tarvitaan ensimmäisen kerran. Tätä mallia käyttämällä Eclipse-ohjelmiston aloitukseen tarvitaan mahdollisimman vähän aktiivisia resurssijoukkoja. Eclipse-LazyStart-ylätunnisteessa täytyy käyttää seuraavaa syntaksia:
Eclipse-LazyStart ::= ( 'true' | 'false' ) ( ';' 'exceptions' '=' '"' exceptions-list '"' ) ? exceptions-list ::= a comma ',' separated list of packages
Exceptions-määritteen avulla luetellaan paketit, jotka eivät saa aiheuttaa resurssijoukon käyttöönottoa silloin, kun niistä ladataan luokkia tai resursseja. Jos Eclipse-LazyStart-ylätunnistetta ei määritetä resurssijoukon manifest-tiedostossa, käytetään oletusarvoa false. Seuraavassa on esimerkki Eclipse-LazyStart-ylätunnisteesta:
Eclipse-LazyStart: true; exceptions="org.eclipse.foo1, org.eclipse.foo2"
Esimerkissä määritetään, että tämä resurssijoukko täytyy ottaa käyttöön siitä ladattavia luokkia tai resursseja varten lukuun ottamatta paketeissa org.eclipse.foo1 ja org.eclipse.foo2 olevia luokkia ja resursseja.
Eclipse-AutoStart-ylätunniste on vanhentunut Eclipse 3.2 -versiossa. Sen sijaan pitäisi käyttää Eclipse-LazyStart-ylätunnistetta.
Eclipse-PlatformFilter-ylätunnisteen avulla määritetään käyttöympäristösuodatin resurssijoukkoa varten. Käyttöympäristösuodattimen täytyy saada arvokseen true ajettavassa käyttöympäristössä, jotta resurssijoukko voitaisiin tulkita. Eclipse-PlatformFilter-ylätunnisteessa täytyy käyttää seuraavaa syntaksia:
Eclipse-PlatformFilter ::= kelvollinen LDAP-suodatusmerkkijono
Kehys tukee suodatusta seuraavien järjestelmäominaisuuksien mukaan:
Seuraavassa on esimerkki Eclipse-PlatformFilter-ylätunnisteesta:
Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86))
Tässä esimerkissä määritetään, että resurssijoukko voidaan tulkita vain, jos käyttöympäristön ominaisuudet ovat osgi.ws=win32, osgi.os=win32 ja osgi.arch=x86. Käyttöympäristössä on siis oltava käytössä x86-arkkitehtuuri, win32-käyttöjärjestelmä ja win32-ikkunointijärjestelmä.
Eclipse-BuddyPolicy-ylätunnisteen avulla määritetään luokkien lataukseen liittyvät kumppanuuskäytännöt resurssijoukkoa varten. Eclipse-BuddyPolicy-ylätunnisteessa täytyy käyttää seuraavaa syntaksia:
Eclipse-BuddyPolicy ::= ( policy-name ) ( ',' policy-name ) * policy-name ::= ( 'dependent' | 'global' | 'registered' | 'app' | 'ext' | 'boot' | 'parent' )
Seuraavassa on esimerkki Eclipse-BuddyPolicy-ylätunnisteesta:
Eclipse-BuddyPolicy: dependent
Eclipse-RegisterBuddy-ylätunnisteen avulla määritetään resurssijoukot, joille tämä resurssijoukko on rekisteröity kumppaniksi. Eclipse-RegisterBuddy-ylätunnisteessa täytyy käyttää seuraavaa syntaksia:
Eclipse-RegisterBuddy ::= ( target-bundle ) ( ',' target-bundle ) * target-bundle ::= resurssijoukon symbolinen nimi
Seuraavassa on esimerkki Eclipse-RegisterBuddy-ylätunnisteesta:
Eclipse-RegisterBuddy: org.eclipse.foo.bundle1, org.eclipse.foo.bundle2
Eclipse-ExtensibleAPI-ylätunnisteen avulla voidaan määrittää, salliiko isäntäresurssijoukko fragmenttiresurssijoukkojen lisätä lisäsovellusohjelmaliittymän isäntään. Tätä ylätunnistetta tulee käyttää, jos halutaan, että isäntäresurssijoukko sallii fragmenttien lisätä lisäpaketteja isännän sovellusohjelmaliittymään. Jos tätä ylätunnistetta ei määritetä, käytetään oletusarvoa false. Eclipse-ExtensibleAPI-ylätunnisteessa täytyy käyttää seuraavaa syntaksia:
Eclipse-ExtensibleAPI ::= ( 'true' | 'false' )
Seuraavassa on esimerkki Eclipse-ExtensibleAPI-ylätunnisteesta:
Eclipse-ExtensibleAPI: true
Eclipse-GenericCapability-ylätunnisteen avulla määritetään resurssijoukon yleiset toiminnot. Yleisten toimintojen avulla voidaan kuvata resurssijoukon ominaisuuksia, joita muut järjestelmän resurssijoukot mahdollisesti tarvitsevat (toimintoja kuvataan Eclipse-GenericRequire-ylätunnisteen avulla). Yleisille toiminnoille annetaan nimi, ja niiden tyyppi määritetään. Toiminnon tyypin määrittää se resurssijoukko, joka tarjoaa toimintoa käyttöön. Toiminnoissa voi olla myös tyypitettyjen vastaavuusmääritteiden joukko, joiden avulla voidaan tutkia vastaavuuksia Eclipse-GenericRequire-ylätunnisteiden selvityksen yhteydessä. Vastaavien määritteiden tyyppi voi olla jokin seuraavista: [string | version | uri | long | double | set]. Set-joukkotyypin avulla voidaan määrittää merkkijonojoukko, joka on pilkuin erotettu merkkijonoluettelo. Eclipse-GenericCapability-ylätunnisteessa täytyy käyttää seuraavaa syntaksia:
Eclipse-GenericCapability ::= capability ( ',' capability ) * capability ::= typed-name ( ';' typed-name ) * ( ';' typed-param ) * typed-name ::= name ( ':' capability-type ) typed-param ::= typed-key '=' quouted-string typed-key ::= name ( ':' [string | version | uri | long | double | set] )
Seuraavassa on esimerkki Eclipse-GenericCapability-ylätunnisteesta, jonka avulla voitaisiin määrittää OSGi-palvelun org.acme.stuff.SomeService toteutuksen sisältävä resurssijoukko:
Eclipse-GenericCapability: org.acme.stuff.SomeService:osgi.service; version:version="1.0.1"
Eclipse-GenericRequire-ylätunnisteen avulla voidaan määrittää edellytys, joka koskee toisen resurssijoukon (Eclipse-GenericCapability-ylätunnisteen avulla) käyttöön tarjoamaa yleistä toimintoa. Yleisille edellytyksille annetaan nimi, ja toiminnon tyyppi määritetään. Toiminnon tyypin määrittää se resurssijoukko, joka tarjoaa toimintoa käyttöön. Yleisiin edellytyksiin voi määrittää LDAP-suodatinmerkkijonon, joka toimii vastaavien yleisten toimintojen valintasuodattimena. Eclipse-GenericRequire-ylätunnisteessa täytyy käyttää seuraavaa syntaksia:
Eclipse-GenericRequire ::= generic-require ( ',' generic-require ) * generic-require ::= typed-name ( ';' typed-name ) * ( ';' selection-filter '=' quoated-ldapFilter ) ( ';' optional '=' [true|false] ) ( ';' multiple '=' [true|false] ) typed-name ::= name ( ':' capability-type )
Seuraavassa on esimerkki Eclipse-GenericRequire-ylätunnisteesta, jonka avulla voitaisiin määrittää OSGi-palvelun org.acme.stuff.SomeService toteutuksesta riippuvainen resurssijoukko:
Eclipse-GenericRequire: org.acme.stuff.SomeService:osgi.service; selection-filter="(version>=1.0.1)"
Valinnan osgi.genericAliases avulla voi määrittää vastaavuuksia olemassa olevien OSGi-manifest-ylätunnisteiden sekä Eclipse-GenericCapability- ja Eclipse-GenericRequire-manifest-ylätunnisteiden välille. Käytetään esimerkkinä seuraavia manifest-ylätunnisteita:
Export-Service: org.acme.stuff.SomeService Import-Service: org.acme.stuff.SomeService
Nämä ylätunnisteet voi määrittää vastaamaan Eclipse-GenericCapability- ja Eclipse-GenericRequire-ylätunnisteita seuraavan ominaisuuden avulla:
osgi.genericAliases=Export-Service:Import-Service:osgi.service
Tämä määritys muuntuisi käytännössä seuraaviksi yleisiksi ylätunnisteiksi:
Eclipse-GenericRequire: org.acme.stuff.SomeService:osgi.service Eclipse-GenericCapability: org.acme.stuff.SomeService:osgi.service
Plugin-Class-ylätunnistetta käytetään vain tukemaan Eclipse 2.1 -käyttöympäristöön kehitettyjä lisäosia. Tässä ylätunnisteessa määritetään luokan nimi, jonka avulla aktivoidaan lisäosa käyttämällä vanhaa Eclipse 2.1 -aktivointimallia. Tätä ylätunnistetta ei pidä käyttää uusissa, Eclipse 3.0 -käyttöympäristöön tai sitä uudempiin käyttöympäristöversioihin kehitetyissä resurssijoukoissa. Seuraavassa on esimerkki Plugin-Class-ylätunnisteesta:
Plugin-Class: org.eclipse.foo.FooPlugin