Représentation de Open Service Gateway Initiative

L'architecture du OSGI

La passerelle OSGI

la passerelle OSGI

Le Framework

Le Framework est le cœur de la passerelle résidentielle. C’est l’environnement d’exécution des bundles. L'administration du Framework inclut:

Le Bundle

Un bundle est une unité de diffusion et de déploiement des services. Il propose ses services au Framework qui les gère et les exécute.

C’est un archivage contenant un ensemble de services satisfaisant les caractéristiques d’OSGI. Les bundles peuvent partager des classes java. Ils peuvent importer/exporter des paquetages disponibles à partir des bundles ou pour les autres bundles. Ils peuvent aussi fournir des services et enregistrer auprès des services déposés dans le Framework.

Le bundle est identifié de manière unique par un numéro d’identification. Quand le bundle est installé dans le Framework, il reçoit un identifiant unique qui sera le même durant toute la durée de vie du bundle.

De même l’état du bundle est fixé par le Framework. Les états sont:

Le bundle dispose également d’une classe Activator, c’est la classe de démarrage. Il dispose de même un fichier Manifest, qui lui contient des spécifications sur le bundle.

Le Activator

C’est une classe publique qui implémente « BundleActivator », et donc implémente les méthodes suivantes :

Cette objet permet au bundle de s’abonner aux événements du Framework. Le Framework détermine l’objet étant Activator selon le Manifest

Le fichier Manifest

Comme indiqué précédemment, le OSGI permet aux applications de découvrir dynamiquement et d’utiliser des services fournis par d’autres applications tournant sur la même plate-forme. Les informations permettant de se lire se trouvent dans le fichier Manifest aussi. Ce sont les premières lignes qui donnent les informations pertinentes à ce propos.

fichier Manifest

Les services

Les services sont des objets qui fournissent des fonctionnalités précises. Ces fonctionnalités sont décrites dans des classes implémentant ce service.

Le OSGI fournit un certain nombre de services comme un service de log, un service de configuration pour l’administrateur ou bien un service d’accès aux dispositifs. Il est également possible de créer ses propres services. Les logiciels permettant de le faire sont, Eclipse avec OSCAR ou ProSyst, Eclipse proposant l’outil gratuit et Open Source.

Exemple du code

Voici un exemple de création d’une classe Activator, implémentant la classe BundleActivator. Nous remarquons que les méthodes start et stop sont redéfinies. C’est dans la méthode start que le service est enregistré auprès du Framework.

exemple de code

Dans ce deuxième exemple, nous verrons l’optimisation des implémentations, en testant si les services dont on aura besoin, existent déjà dans le Framework ou pas.

exemple de code