Vous êtes ici

Service de log

logoosgi.gif Après le premier test d'OSGi, il est maintenant temps d'essayer de faire de l'utile et du concret. J'ai plusieurs idées en tête... Mais avant de m'y attaquer, je veux mettre en place ce qui servira de base à la suite.

Le premier élément à considérer est le service de log.

La documentation de référence du service de log se trouve dans le document OSGi Service Platform - Service Compendium - Release 4 - August 2005. Une implémentation de ce service est fournie par le projet Equinox.

Pour récupérer l'implémentation Equinox du service de log, d'abord faire un checkout depuis le repository Eclipse, en utilisant Eclipse :

  • faire File / New / Project...
  • choisir CVS / checkout projects from CVS...
  • cliquer sur Next
  • fournir les infos sur le repository :
      Host :            dev.eclipse.org
      Repository path : /cvsroot/eclipse
      User :            anonymous
      Password :        [laisser vide]
      Connection type : pserver
    
  • cliquer sur Next
  • sélectionner Use an existing module, ce qui permet d'obtenir la liste de tous les modules CVS disponibles
  • choisir org.eclipse.equinox.log
  • cliquer sur Next
  • conserver les valeurs par défaut de la fenêtre suivante : Check out as a project in the workspace, Project Name : org.eclipse.equinox.log
  • cliquer sur Finish

Nous voilà avec le projet Eclipse qui va bien, pour le service de log.

Comme pour le premier test d'OSGi, construire le jar, lancer OSGi, démarrer le framework, puis installer le bundle :

jar cfm log.jar META-INF/MANIFEST.MF -C src org/eclipse/equinox/log
java -jar /home/pascalb/eclipse/plugins/org.eclipse.osgi_3.1.1.jar -console
    launch 
    install file:/home/pascalb/workspace/org.eclipse.equinox.log/log.jar
    start 7                     # id retournée par la commande install

Et là, comme le laissait présager le contenu de MANIFEST.MF, on se récupère une erreur liée aux paquetages importés par le bundle :

org.osgi.framework.BundleException: The bundle could not be resolved. 
Reason: missing imported package org.osgi.service.cm_1.0.0,imported 
package org.osgi.service.log_1.2.0

Les paquetages nécessaires sont disponibles dans le bundle org.eclipse.osgi.services. Le récupérer depuis Eclipse (voir ci-dessus). Puis, depuis le répertoire /home/pascalb/workspace/org.eclipse.osgi.services, passer la commande

jar cfm services.jar META-INF/MANIFEST.MF org/osgi/service/

Ensuite, depuis la console OSGi, installer le bundle résultant, puis le bundle log.

Il est possible de générer le jar depuis Eclipse. Pour cela :

  • File / Export ... / Deployable plug-ins and fragments
  • choisir le plug-in à exporter, et indiquer le nom désiré pour le jar
  • cliquer sur Finish

A noter que le contexte d'OSGi est persistant : si un bundle est installé et démarré, et que la plate-forme est arrêtée sans que le bundle soit arrêté, le bundle sera redémarré par la plate-forme dès qu'elle sera relancée.