Manifestrubriker för OSGi-samlingspaket

Version 3.1 - Senast uppdaterad 20 juni 2005

Ett samlingspaket kan innehålla beskrivande information om sig själv i manifestfilen med namnet META-INF/MANIFEST.MF. I OSGi R4-ramverksspecifikationen definieras en uppsättning manifestrubriker, till exempel Export-Package och Bundle-Classpath, som samlingspaketutvecklare använder till att ange beskrivande information om samlingspaketet. Eclipse OSGi-ramverket implementerar den fullständiga OSGi R4-ramverksspecifikationen och alla kärnramverkstjänster. Exempel på OSGi R4-kärnramverkstjänster:

Det finns ett antal valfria tjänster definierade i OSGi R4-specifikationen. De valfria tjänsterna ingår inte i implementeringen av Eclipse OSGi-ramverket. Information om OSGi R4-manifestrubriker och -tjänster finns i OSGi-specifikation.

Manifestrubriker för Eclipse-samlingspaket

Eclipse OSGi-ramverket har funktioner för ytterligare ett antal manifestrubriker och -direktiv. En samlingspaketutvecklare kan använda de här rubrikerna och direktiven till att utnyttja några extra funktioner i Eclipse OSGi-ramverket som inte anges som en del av ett standard-OSGi R4-ramverk.

Extra Export-Package-direktiv

Eclipse OSGi-ramverket har funktioner för ytterligare direktiv för Export-Package-rubriken. De direktiven används till att ange regler för åtkomstbegränsning för ett exporterat paket. Läs osgi.resolverMode om du vill konfigurera Eclipse OSGi-ramverket så att reglerna för åtkomstbegränsning används under körning.

x-internal-direktivet

x-internal-direktivet kan användas i en Export-Package-rubrik till att ange om paketet är ett internt paket. Utvecklingsmiljön för insticksprogram försvårar för andra samlingspaket att använda ett internt paket. Om x-internal-direktivet inte anges används standardvärdet false. x-internal-direktivet måste ha följande syntax:

x-internal ::= ( 'true' | 'false' )

Det följande är ett exempel på x-internal-direktiv:

Export-Package: org.eclipse.foo.internal; x-internal:=true

x-friends-direktivet

x-friends-direktivet kan användas i en Export-Package-rubrik till att ange en lista med samlingspaket som har åtkomst till paketet. Utvecklingsmiljön för insticksprogram försvårar för andra samlingspaket att använda paketet. x-friends-direktivet måste ha följande syntax:

x-friends ::= '"' ( målsamlingspaket ) ( ',' målsamlingspaket ) * '"'
målsamlingspaket ::= ett symboliskt namn på samlingspaketet

Det följande är ett exempel på x-friends-direktiv:

Export-Package: org.eclipse.foo.formyfriends; x-friends:="org.eclipse.foo.friend1, org.eclipse.foo.friend2"

I exemplet visas att endast samlingspaketen org.eclipse.foo.friend1 och org.eclipse.foo.friend2 bör använda org.eclipse.foo.formyfriends-paketet. x-internal-paketet har prioritet över x-friends-direktivet. Om x-internal-direktivet anger true görs försök i utvecklingsmiljön för insticksprogram att hindra alla samlingspaket från att använda paketet även om de är angivna som friend.

Eclipse-LazyStart-rubriken

Eclipse-LazyStart-rubriken används till att ange om ett samlingspaket bör startas automatiskt innan det får åtkomst till första klassen eller resursen. Tack vare den här funktionen kan Eclipse aktivera samlingspaket automatiskt första gången de behövs. Med den här modellen kan Eclipse starta med så få aktiva samlingspaket som möjligt. Eclipse-LazyStart-rubriken måste ha följande syntax:

Eclipse-LazyStart ::= ( 'true' | 'false' ) ( ';' 'undantag' '=' '"' undantagslista '"' ) ?
undantagslista ::= ett kommaavgränsad (,) lista med packet

Attributet exceptions används till att ange en lista med paket som inte får orsaka att samlingspaketet aktiveras när klasser eller resurser läses in från dem. Om Eclipse-LazyStart-rubriken inte definierats i samlingspaketmanifestet används standardvärdet false. Det följande är ett exempel på Eclipse-LazyStart-rubrik:

Eclipse-LazyStart: true; exceptions="org.eclipse.foo1, org.eclipse.foo2"

I exemplet visas att samlingspaketet måste aktiveras för alla klasser och resurser som lästs in från samlingspaketetförutom klasser och resurser i paketen org.eclipse.foo1 och org.eclipse.foo2.

Eclipse-AutoStart-rubriken har avvecklats i Eclipse 3.2. Eclipse-LazyStart-rubriken används i stället.

Eclipse-PlatformFilter-rubrik

Eclipse-PlatformFilter används till att ange ett plattformsfilter för ett samlingspaket. Ett plattformsfilter måste utvärderas till true i en plattform som körs för att ett samlingspaket ska kunna tolkas. Eclipse-PlatformFilter-rubriken måste ha följande syntax:

Eclipse-PlatformFilter ::= en giltig LDAP-filtersträng

Ramverket har funktioner för filtrering för följande systemegenskaper:

Det följande är ett exempel på Eclipse-PlatformFilter-rubrik:

Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86))

I exemplet visas att samlingspaketet endast kan tolkas om plattformsegenskaperna är osgi.ws=win32, osgi.os=win32 och osgi.arch=x86. Med andra ord, en plattform som körs i en x86-arkitektur med operativsystemet win32 och fönstersystemet win32.

Eclipse-BuddyPolicy-rubrik

Eclipse-BuddyPolicy-rubriken används till att ange regel för buddy-klassinläsning för ett samlingspaket. Eclipse-BuddyPolicy-rubriken måste ha följande syntax:

Eclipse-BuddyPolicy ::= ( regelnamn ) ( ',' regelnamn ) *
regelnamn ::= ( 'dependent' | 'global' | 'registered' | 
                  'app' | 'ext' | 'boot' | 'parent' )

Det följande är ett exempel på Eclipse-BuddyPolicy-rubrik:

Eclipse-BuddyPolicy: dependent

Eclipse-RegisterBuddy-rubrik

Eclipse-RegisterBuddy-rubriken används till att ange en lista med samlingspaket som det här samlingspaketet är en registrerad buddy för. Eclipse-RegisterBuddy-rubriken måste ha följande syntax:

Eclipse-RegisterBuddy ::= ( målsamlingspaket ) ( ',' målsamlingspaket ) *
målsamlingspaket ::= ett symboliskt namn på samlingspaketet

Det följande är ett exempel på Eclipse-RegisterBuddy-rubrik:

Eclipse-RegisterBuddy: org.eclipse.foo.bundle1, org.eclipse.foo.bundle2

Eclipse-ExtensibleAPI-rubrik

Eclipse-ExtensibleAPI används till att ange om ett värdsamlingspaket tillåter fragmentsamlingspaket att lägga till fler API:er till värden. Den här rubriken bör användas om ett värdsamlingspaket ska tillåta fragment att lägga till fler paket till API:t för värden. Om rubriken inte anges används standardvärdet false. Eclipse-ExtensibleAPI-rubriken måste ha följande syntax:

Eclipse-ExtensibleAPI ::= ( 'true' | 'false' )

Det följande är ett exempel på Eclipse-ExtensibleAPI-rubrik:

Eclipse-ExtensibleAPI: true

Eclipse-GenericCapabilty-rubriken

Eclipse-GenericCapability-rubriken används till att ange allmänna funktioner för ett samlingspaket. Allmänna funktioner kan användas till att beskriva funktioner för samlingspaketet som kan krävas av andra samlingspaket i systemet (där Eclipse-GenericRequire-rubriken används). Allmänna funktioner tilldelas ett namn och en funktionstyp. Funktionstypen definieras av det samlingspaket som tillhandahåller funktionen. Funktioner kan även ha en uppsättning typdefinierade överensstämmande attribut som används när Eclipse-GenericRequire-rubriker tolkas. Överensstämmande attribut kan vara av följande typer: [string | version | uri | long | double | set]. Uppsättningstypen kan användas till att definiera en uppsättning strängar som en kommaavgränsad lista med strängar. Eclipse-GenericCapability-rubriken måste ha följande syntax:

  Eclipse-GenericCapability ::= funktion ( ',' funktion ) *
  funktion                ::= typdefinierat_namn ( ';' typdefinierat_namn ) *
                                ( ';' typdefinierad_param ) *
  typdefinierat_namn        ::= namn ( ':' funktionstyp )
  typdefinierad_param       ::= typdefinerad_nyckel '=' sträng_inom_citattecken
  typdefinerad_nyckel       ::= namn ( ':'
                                [string | version | uri | long | double | set] )

Det följande är ett exempel på en Eclipse-GenericCapability-rubrik som kan användas till att ange ett samlingspaket med en org.acme.stuff.SomeService-implementation för en OSGi-tjänst:

  Eclipse-GenericCapability: 
   org.acme.stuff.SomeService:osgi.service; 
   version:version="1.0.1"

Eclipse-GenericRequire-rubriken

Eclipse-GenericRequire-rubriken används till att ange ett krav för en allmän funktion som tillhandahålls av ett annat samlingspaket (där Eclipse-GenericCapability-rubriken används). Allmänna krav tilldelas ett namn och en funktionstyp. Funktionstypen definieras av det samlingspaket som tillhandahåller funktionen. Allmänna krav kan ange en LDAP-filtersträng som används som ett urvalsfilter vid tolkning med överensstämmande allmänna funktioner. Eclipse-GenericRequire-rubriken måste ha följande syntax:

  Eclipse-GenericRequire   ::= allmänt_krav ( ',' allmänt_krav ) *
  allmänt_krav             ::= typdefinerat_namn ( ';' typdefinerat_namn ) *
                               ( ';' urvalsfilter '=' ldapFilter_inom_citattecken )
                               ( ';' valfritt '=' [true|false] )
                               ( ';' flera '=' [true|false] )
  typdefinerat_namn        ::= namn ( ':' funktionstyp )

Det följande är ett exempel på en Eclipse-GenericRequire-rubrik som kan användas till att ange ett samlingspaket som är beroende av en org.acme.stuff.SomeService-implementation för en OSGi-tjänst:

  Eclipse-GenericRequire: 
   org.acme.stuff.SomeService:osgi.service; 
   selection-filter="(version>=1.0.1)"

Allmänna alias

Alternativet osgi.genericAliases kan användas till att avbilda befintliga OSGi-manifestrubriker till Eclipse-GenericCapability- och Eclipse-GenericRequire-manifestrubriker. Beakta till exempel följande manifestrubriker

  Export-Service: org.acme.stuff.SomeService
  Import-Service: org.acme.stuff.SomeService

De här rubrikerna kan avbildas till Eclipse-GenericCapability- och Eclipse-GenericRequire-rubriker med hjälp av följande egenskap:

  osgi.genericAliases=Export-Service:Import-Service:osgi.service

De omvandlas till följande allmänna rubriker:

  Eclipse-GenericRequire: org.acme.stuff.SomeService:osgi.service
  Eclipse-GenericCapability: org.acme.stuff.SomeService:osgi.service

Plugin-Class-rubrik

Plugin-Class-rubriken används endast för insticksprogram som utvecklats för Eclipse 2.1-plattformen. Rubriken används till att ange ett klassnamn som används till att aktivera ett insticksprogram där den gamla Eclipse 2.1-aktiveringsmodellen används. Den här rubriken bör inte användas för nya samlingspaket som utvecklats för Eclipse 3.0-plattformen eller senare. Det följande är ett exempel på Plugin-Class-rubrik:

Plugin-Class: org.eclipse.foo.FooPlugin