Chargement des bibliothèques et des classes de tiers
Parce que OSGi utilise multiples chargeurs de classes, l'usage transparent de bibliothèques de tiers extensibles/configurables exige l'utilisation d'un mécanisme spécifique d'Eclipse appelé "buddy loading". Ce mécanisme permet à un bundle d'indiquer qu'il a besoin d'une assistance pour charger des classes ou des ressources lorsqu'il ne les trouve pas dans ses prérequis. Notez que nous appelons "bibliothèques extensibles", des bibliothèques qui ont besoin de voir les classes ou les ressources fournies par le code de l'utilisateur (par exemple log4j logger mechanism, hibernate,...).
Pour indiquer le besoin d'un chargement coopératif, un bundle doit modifier son manifeste et ajouter l'en-tête suivante :
Eclipse-BuddyPolicy: <value>
<value> se réfère à la règle utilisée pour rechercher les classes. Les règles prises en charge sont les suivantes :
- registered - indique le mécanisme coopératif consultera les bundles qui lui ont été enregistrés. Un bundle disposé à être enregistré à un bundle particulier lui ajoute son manifeste: "Eclipse-RegisterBuddy: <bundleSymbolicName>";
- dependent - indique que ces classes/ressources seront recherchées récursivement dans toutes les dépendances du bundle;
- global - indique que les classes/ressources seront recherchées dans le pool global du package exporté;
- app - indique que le chargeur de classes de l'application sera consulté;
- ext - indique que le chargeur de classes d'extensions sera consulté;
- boot - indique que le chargeur de classes de boot sera consulté.