La plateforme dynamique à services
OSGi™
Gaël Thomas
(Basé sur un cours de Dider Donsez)
Université Pierre et Marie Curie
Master Informatique
2007/2008
Gaël Thomas OSGi 2
Les services
Service : entité informatique définie par un ensemble de descripteurs de service
enregistrés dans un annuaire de service
Descripteur : ensemble de propriétés définissant l’accès à l’entité
Exp : une interface Java ou IDL pour un fournisseur (interface offerte)
ou une interface Java ou IDL pour un client (interface requise)
Contrat : ensemble des descripteurs mis en relation
Exp : deux interfaces égales (ifce fournisseur = ifce du client)
+ propriétés de QoS
En général : contrat = mis en relation d’un client et d’un founrisseur
Annuaire : associe des entités avec des descripteurs de service
Exp : service associant des serveurs et des interfaces, recherche d’un serveur à partir
de son interface
service de nommage (associe un nom aux serveurs)
Gaël Thomas OSGi 3
Les services
Intérêt des services
Seul le descripteur est nécessaire pour trouver un fournisseur
Pas de dépendance vis à vis d’un nom indépendant
Descripteur définit l’interface, les meta-données, les assertions etc…
Mécanisme de recherche intuitif
Exemple : "Trouve moi une imprimante couleur à l’étage"
Interface d’imprimante {
void print(PostScript file)
}
Propriétés :
couleur = vrai
étage = mon-étage
Gaël Thomas OSGi 4
Les services
Trois intervenants :
Fournisseur de service
Imprimante, amazone.com
Client du service
Utilisateur final, application à base de services, moteur d’orchestration
Annuaire de services (Service Registry)
UDDI, pages jaunes, registry OSGi
Un annuaire de service contient des associations entre
descripteurs et instances de fournisseur
Gaël Thomas OSGi 5
Annuaire
de services
Utilisateur
de Service
Les services
Fournisseur
de service
Loc + props 1 – Enregistrement
2 – Recherche
3 – Résultat et sélection
4 – Liaison
5 – Utilisation
Architecture orientée service
Exemples : Web Services, OSGi™, Jini…
Gaël Thomas OSGi 6
Annuaire
de services
Utilisateur
de Service
Les services
Fournisseur
de service
Loc + props
Fournisseur
de service
Loc + props
Disparition du service
Architecture orientée service dynamique
Perte du serveur détection de la perte d’un service + reliaison (presque)
transparente
Exemple : OSGi, Jini…
Gaël Thomas OSGi 7
Annuaire
de services
Utilisateur
de Service
Les services
Fournisseur
de service
Loc + props
Re-liaison dynamique
Architecture orientée service dynamique
Perte du serveur détection de la perte d’un service + reliaison (presque)
transparente
Exemple : OSGi, Jini…
Gaël Thomas OSGi 8
Les services
Séparation supplémentaire entre modules logiciels :
Un utilisateur conçoit son application en fonction d’un service offert et non
d’une implémentation précise du service
Par exemple : j’utilise un service météo au lieu de Météo France
La liaison avec une implémentation de service est effectuée
Lors de la conception (programmation classique)
Mais l’application reste indépendante de l’implémentation
Lors de la compilation
Pendant l’exécution
Les services augmentent
L’indépendance entre modules logiciels
La flexibilité dynamique
Gaël Thomas OSGi 9
Les services
Hypothèse forte
L’interface d’un service n’évolue jamais
En revanche, la description peut évoluer (assertions, meta-données…)
Gaël Thomas OSGi 10
Qu’est ce qu’OSGi™
Plateforme à service
Centralisé (une seule VM)
Orienté au départ vers les Gateway
Dynamique
Liaison (de base) uniquement par appel de méthode
Consortium indépendante
Fondée en mars 1999
Soutenue par de nombreux acteurs (IT, téléphonie, Eclipse, Apache)
Releases
22/11/1999 : SUN transfert le JSR008 du JCP à OSGi
1.0 : mai 2000 (189 pages)
2.0 : octobre 2001 (238 pages)
3.0 : mars 2003 (602 pages)
4.0 : octobre 2005 (1000 pages!)
Remarque : Open Services Gateway Initiative est obsolète
Gaël Thomas OSGi 11
Qu’est ce qu’OSGi™
Trois principales implantations de la spécification
Felix (Apache)
Eclipse-equinox (IBM)
Moteur à pluggin d’eclipse
Knopflerfish
Gaël Thomas OSGi 12
Motivation d’OSGi™
Programmation orientée service en Java
Cible des systèmes à mémoire restreinte
Mise à jour dynamique d’application sans interruption
Installation, mise à jour, lancement, arrêt, retrait
Résolution des dépendances de version de code
Chargement/déchargement de code en Java
Gaël Thomas OSGi 13
Sommaire
Motivations
Bundle, services et packages
Cycle de vie
Manifest, Activator et BundleContext
Enregistrement et recherche de services
Gestion d’événements
Gaël Thomas OSGi 14
Machine
Virtuelle
Java
Bundle
Unité fonctionnelle fondamentale de OSGi™
Offre des services
Se lie (utilise) des services
Un bundle est l’unité de déploiement d’OSGi™
Plateforme OSGi™
Bundle
Bundle
Bundle
Chargement
Gaël Thomas OSGi 15
Notion de contrat de service
Un service implémente (offre) un interface Java
C’est l’interface Java que doit implémenter la classe Java du service
Représenté par la partie XML-Schema en Web Services
Représenté par le nom de la classe de l’interface
Plusieurs services peuvent implanter la même interface
simultanément
L’interface se trouve dans un bundle pour pouvoir être
déployé et chargé dynamiquement dans OSGi™
Gaël Thomas OSGi 16
Notion de contrat de service
Un service possède des meta données
Table de hash associant String à Object
Permet le filtrage, l’évolution dynamique du contrat
Exemple de descripteur :
Interface implantée : org.osgi.Printer
Propriétée : color=true, proto=ftp, (dpi>=300 && dpi<=600)
Pas de notion d’assertions en OSGi
Gaël Thomas OSGi 17
Dépendance de services, dépendances de packages
Une interface Java est un binaire!
Il ne faut pas embarquer le binaire contrat dans les fournisseurs ou
les utilisateurs
Sujet à incohérences
Lourd en mémoire
Gaël Thomas OSGi 18
Dépendance de services, dépendances de packages
Une interface de service => déployée dans un bundle
Bundle qui n’offre pas de service!
Il existe donc une seconde dépendance entre bundles :
la dépendance de packages
La plateforme OSGi™ résout automatiquement les
dépendances de packages
Gaël Thomas OSGi 19
0010
0010
1001
0010
0010
1001
0010
0010
1001
Manifest
….
Services
Fournis Services
Requis
Packages
Exportés Packages
Importés
Objets métiers (classes ou jar Java)
Implémentent les services
Ressources
Description du Bundle
Activateur (classe Java)
Enregistre les services fournis
Cherche les services requis
Structure d’un bundle
Notion d’activateur : code exécuté au chargement
Gaël Thomas OSGi 20
L’interface de service typique
0010
0010
1001
0010
0010
1001
0010
0010
1001
Manifest
….
Exporte le package de l’interface
Exemple : osgi.printer
Pas d’activateur
1 / 13 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !