Elsass JUG - OSGi
Upcoming SlideShare
Loading in...5
×
 

Elsass JUG - OSGi

on

  • 652 views

 

Statistics

Views

Total Views
652
Views on SlideShare
642
Embed Views
10

Actions

Likes
2
Downloads
12
Comments
0

3 Embeds 10

https://twitter.com 6
http://www.linkedin.com 3
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Elsass JUG - OSGi Elsass JUG - OSGi Presentation Transcript

  • OSGi 11 octobre 2012 François FornaciariZenika © 2012 1
  • François Fornaciari  Membre du Board de l’OSGi Users’ Group France  Consultant Zenika  Spécialiste Java EE / RIA  Formateur OSGi  Ancien développeur JOnAS  @fornacif  francois.fornaciari@zenika.comZenika © 2012 2
  • OSGi Définition « Une plate-forme de déploiement et d’exécution de services Java »Zenika © 2012 3
  • OSGi Spécifications Standards décomposés en plusieurs volets  Core  Plateforme minimale  Détail du fonctionnent d’un framework OSGi  Définition des services obligatoires  Compendium  Définition de l’ensemble des services additionnels  Enterprise  Définition des services estampillés « Enterprise »  Portage de composants Java EEZenika © 2012 4
  • OSGi Historique  Fondation de lOSGi Alliance en 1999  Historique des Releases R1.0 R2.0 R3.0 R4.0 • mai 2000 • octobre 2001 • mars 2003 • août 2005 R4.2 R4.2 R4.1 R4.0.1 Compendium Core • avril 2007 • juillet 2006 • août 2009 • juin 2009 R4.2 R4.3 R4.3 R5.0 Enterprise Core Compendium Core + Ent. • mars 2010 • avril 2011 • janvier 2012 • mars 2012Zenika © 2012 5
  • OSGi Objectifs  Modularité des applications  Meilleur découpage des applications  Isolation des modules  Chargement / déchargement de code sans interruption de la plate- forme  Résolution des dépendances versionnées de code  Architecture orientée service  Couplage faible  Configuration dynamique des applications  Exemple d’utilisation : architectures à base de pluginsZenika © 2012 6
  • OSGi Implémentations open source  Apache Felix  Eclipse Equinox (RI)  KnopflerfishZenika © 2012 7
  • Specification R1.0 Bundle  Bundle  Unité de déploiement : JAR + MANIFEST  Unité fonctionnelle (offre des services) Provided res Required services classes services Exported Imported packages manifest packages  Application  Ensemble de bundles  Livrés dynamiquement  Eventuellement partagés avec d’autres applicationsZenika © 2012 8
  • Specification R1.0 MANIFEST # Package(s) requis Import-Package: com.zenika.interface;version=1.1.0 # Package(s) fournis Export-Package: com.zenika.util;version=2.0.0 # Identifiant du bundle : unique pour la plate-forme Bundle-SymbolicName: com.zenika.example # Version du bundle Bundle-Version: 2.1.0 # Nom du bundle Bundle-Name: Exemple # Nom de la classe Activator (équivalent de la classe Main) Bundle-Activator: com.zenika.internal.ActivatorZenika © 2012 9
  • Specification R1.0 BundleActivator  Interface BundleActivator import org.osgi.framework.Bundle; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; public class Activator implements BundleActivator { public void start(BundleContext bundleContext) throws Exception { Bundle[] bundles = bundleContext.getBundles(); for (Bundle bundle : bundles) { System.out.println(bundle.getSymbolicName()); } } public void stop(BundleContext bundleContext) throws Exception { System.out.println("Bundle is stopping"); } }Zenika © 2012 10
  • Specification R1.0 BundleContext Point daccès vers le framework OSGi  Un BundleContext par bundle  Enregistrement de services  Recherche de services  Souscription aux évènements du framework  FrameworkListener, BundleListener, ServiceListener  Accès au framework  Liste des bundles / services disponibles  Installation / mise à jour / désinstallation de bundlesZenika © 2012 11
  • Specification R1.0 Services (1/2) Service broker Lookup Register Specification Binding Consumer ProviderZenika © 2012 12
  • Specification R1.0 Services (2/2)  Publication PrintService service = new PrintServiceImpl(); Dictionary<String, String> props = new Hashtable<String, String>(); props.put("color", "true"); sr = bundleContext.registerService(PrintService.class, service, props);  Recherche ServiceReference<PrintService> serviceReference = bundleContext.getServiceReference(PrintService.class); // Si on trouve une référence, on récupère le service if (serviceReference != null) { PrintService printService = bundleContext.getService(serviceReference); }Zenika © 2012 13
  • Specification R1.0 Services additionnels  LogService  Implémentation de loggers dynamiques  HttpService  Service permettant denregistrer des servlets et des ressources et de les publier via HTTP  Et quelques autres…Zenika © 2012 14
  • Specifications R1.0 DemoZenika © 2012 15
  • Specification R2.0 Abstraction de la dynamicité  BundleListener et ServiceListener : gestion bas niveau  Exemple de complexité  Un bon gestionnaire de services nécessite la récupération des services existants et ceux qui vont apparaitre ou disparaitre au « runtime »  ServiceTracker  Factorisation de la récupération des services et des notifications  Possède des méthodes utilitaires PrintService service = serviceTracker.getService();  BundleTracker sur le même principe  Introduit lors d’une release postérieureZenika © 2012 16
  • Specification R2.0 Services additionnels (1/2)  Configuration Admin Service  Configuration dynamique d’un bundle  Notification de la MAJ de la configuration  Exemple  Chaque service JOnAS possède sa propre configuration  La présence d’une configuration déclenche le démarrage du service  Metatype Service  Description de la structure d’une configuration (types, valeurs par défaut, …)  Utilisé par les interfaces d’administration par exempleZenika © 2012 17
  • Specifications R2.0 DemoZenika © 2012 18
  • Eclipse 3.0 2004 : Première version d’Eclipse basée sur OSGi  Les plugins sont des bundles OSGi  Exemple d’utilisation massive d’OSGiZenika © 2012 19
  • Specification R4.0 Event Admin Service  Basé sur le modèle publication-souscription dévènements synchrones ou asynchrones postEvent (topics) EventAdmin Publisher « service » EventHandler handleEvent « service » (topics)Zenika © 2012 20
  • Specification R4.0 Gestion de la complexité  La plateforme OSGi permet de créer des applications dynamiques et extensibles  Cependant, la gestion de la dynamicité est complexe  Les développeurs veulent se focaliser sur le code métier et non sur les mécanismes OSGi de bas niveau  Solutions : canevas dexécution de composants orientés service  Declarative Services (Compendium)Zenika © 2012 21
  • Specification R4.0 Declarative Services (1/2)  Modèle de programmation par composants  Composant DS : POJO Java  Capacité d’un composant  Possède son propre cycle de vie (dépend de l’état du bundle)  Requière des services  L’activation d’un composant peut être liée à la résolution de ses dépendances de service  Fournit des services  Possède une configuration  Intégration possible avec Configuration Admin Service  Déclaration des composants  XML  Annotations  ProgrammatiqueZenika © 2012 22
  • Specification R4.0 Implémentations  Implémentations Declarative Services  Apache Felix : Service Component Runtime (SCR)  Eclipse Equinox : DS  Ecosystème  Chaque communauté implémente un ensemble de services Compendium  Possible d’utiliser une implémentation différente du framework d’exécutionZenika © 2012 23
  • Apache Felix iPOJO  Alternative à Declarative Services  Framework complet, léger et extensible  Attention : non standardZenika © 2012 24
  • Specification R4.0 DemoZenika © 2012 25
  • Serveurs d’applications Java EE  2006 : premier prototype de JOnAS basé sur OSGi  2008 : sortie de JOnAS 5  Refonte complète de l’architecture  Introduction de la notion de profils  Passage des autres acteurs du marché à OSGi  Glassfish, JBoss, Apache Geronimo, Websphere, …  Introduction des modèles de programmation hybrides Java EE / OSGi  Déploiement de WAR/JAR/EAR/RAR ou de bundles  EJB exposés sous forme de services OSGi  Récupération de services OSGi depuis JavaEEZenika © 2012 26
  • Spring Dynamic Modules  2008 : sortie de la version 1.0 de Spring DM  Portage du modèle de programmation Spring sur OSGi  Objectifs visés  Abstraction d’OSGi aux développeurs d’applications Spring  Tire parti du standard sans être intrusif durant les développements  Mais également possibilité d’interagir avec l’environnement OSGi depuis les applications  Beaucoup de serveur d’applications basés sur OSGi ne fournissait pas un modèle de programmation OSGi au développeur  OSGi limité à l’architecture interne du produitZenika © 2012 27
  • Specification R4.2 Core et Compendium  Service Hooks  Spécification permettant dinteragir avec le « service engine »  Connaître les services requis par les bundles  Limiter la visibilité de certains services  Mettre facilement en œuvre des proxies de services  Remote Services  Rendre accessible des services OSGi depuis un autre framework (serveur distant)  Fournit un mécanisme dexposition de services  Création dun endpoint par service  Le protocole de communication nest pas spécifié  Basé sur des technologies Web Service, JMS, ....Zenika © 2012 28
  • Specification R4.2 Enterprise (1/2)  Première spécification délivrée en 2010 par lOSGi Alliance Enterprise Expert Group (EEG)  Bien que destinée à lorigine au domaine de lembarqué, la spécification OSGi couvre désormais le domaine de lentreprise  Décrit un ensemble de services orientés « entreprise »  JMX Management Model  JDBC Service / JPA Service / JTA Transaction Service  JNDI Service  Web Applications  …  Permet aux applications OSGi de sappuyer sur un modèle de développement basé sur des services Java EE  Réutilisation de standards éprouvés en entrepriseZenika © 2012 29
  • Specification R4.2 Enterprise (2/2) Implémentations  Apache Aries  Eclipse GeminiZenika © 2012 30
  • Specification R4.2 Enterprise (2/2) Blueprint  Standard issu du modèle de programmation Spring  Framework à composants  Intégration plus poussée avec OSGi Enterprise  Implémentations  Apache Aries Blueprint  Eclipse Gemini Blueprint  Suite à l’abandon de Spring DM par SpringSource en 2010, scission du projet en Eclipse Blueprint et Eclipe VirgoZenika © 2012 31
  • OSGi Kernels  Frameworks OSGi comprenant un ensemble de fonctionnalités additionnelles  Console, logging, provisioning, gestion des composants, extension du shell, sécurité, ...  Apache Karaf  Eclipse VirgoZenika © 2012 32
  • Specification R4.2 DemoZenika © 2012 33
  • Specification R4.3 Core (1/2)  Bundle Wiring API  Start Level APIZenika © 2012 34
  • Specification R4.3 Core (2/2)  Weaving Hooks  Permet dintercepter le chargement de classe des bundles et de manipuler le bytecode avant chargement  Resolver Hook  Permet dintercepter le mécanisme de résolution de packages et dinfluencer le resolver  Exemple : limiter la visibilité de certains packages  Bundle Hook  Permet dintercepter les évènements du framework à propos du cycle de vie des bundles (Event Hook)  Permet de limiter la visibilité de certains bundles (Find Hook)Zenika © 2012 35
  • Specification R4.3 DemoZenika © 2012 36
  • Specification R5.0 Enterprise  Resolver Service  Utilisable par des outils d’administration pour calculer les ressources nécessaires au déploiement d’un bundle  Simulation de l’impact d’une mise à jour  Repository Service  Standardisation de l’actuel OBR  Subsystem  Isolation d’un groupe de bundles  Définition des interactions avec les autres bundles du frameworkZenika © 2012 37
  • Références  Demo: https://github.com/fornacif/osgi-console.git  OSGi Alliance : http://www.osgi.org  OSGi Wiki : http://en.wikipedia.org/wiki/OSGi  Apache Felix : http://felix.apache.org  Apache Karaf : http://karaf.apache.org  Apache Aries : http://aries.apache.org  Eclipse Equinox : http://www.eclipse.org/equinox  Eclipse Virgo : http://www.eclipse.org/virgo  Eclipse Gemini : http://www.eclipse.org/gemini  Eclipse Libra : http://www.eclipse.org/libra  Bndtools : http://njbartlett.name/bndtools.htmlZenika © 2012 38
  • Zenika © 2012 39