OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java...
Transcript of OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java...
![Page 1: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/1.jpg)
14 octobre 200814 octobre 2008
www.parisjug.orgwww.parisjug.org
www.parisjug.org
Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
![Page 2: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/2.jpg)
OSGI
Cyrille Le Clerc
Nicolas Griso
14 octobre 200814 octobre 2008
www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
![Page 3: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/3.jpg)
3 www.xebia.fr / blog.xebia.fr
La modularité
Caractéristiques d’un module ?
Expose un contrat versionné
Masque ses détails d’implémentation
Décrit ses dépendances
![Page 4: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/4.jpg)
4 www.xebia.fr / blog.xebia.fr
Pourquoi la modularité ?
Limites du monolithiqueWindows Vista (50 M SLOC) est le dernier OS monolithique de Microsoft
Réutilisation et émergence de stacks Middleware Java Serveur JavaEE, ESB/BPM, portail, télécoms, Consolidation de marché Maturité des briques et API de base
« One size does NOT fit all ! »Profiles Java EE 6
![Page 5: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/5.jpg)
www.xebia.fr / blog.xebia.fr
La modularité en JavaL’existant
Les jarsLes classloaders hiérarchiquesMaven 2
Le futurJava Module SystemOSGi
![Page 6: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/6.jpg)
6 www.xebia.fr / blog.xebia.fr
La modularité en JavaL’existant : les jars
Module de base : le Jar
Concept de build sans réalité au runtime
Pas de gestion de versionUne seule version d’un jar peut être chargée
Pas d’intermédiaire de visibilité entre protected et public
Pas de description des dépendances
Java s’est jusqu’à présent peu soucié du concept de module
![Page 7: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/7.jpg)
7 www.xebia.fr / blog.xebia.fr
La modularité en JavaL’existant : les classloaders hiérarchiques
Les classloaders sont hiérarchiques et héritent de la visibilité du parent
Visibilité globale dans un classloader
Impossibilité de charger plusieurs version d’une classe dans un classloader
Les packages ne sont pas contraints au runtimeDeux classes d’un package peuvent provenir de jars différents
![Page 8: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/8.jpg)
8 www.xebia.fr / blog.xebia.fr
tomcat-dbcp-6.0.16.jar
La modularité en JavaL’existant : les classloaders hiérarchiques
JVM Classloader jce-provider.jar
rt.jar
Servlet Engine ClassLoader
servlet-api-2.5.jar
catalina-6.0.16.jar
Web App ClassLoadermy-model-1.0.jar
my-service-1.0.jar
hibernate-core-3.3.0.jar
jdom-1.0.jar
Web Application Classique
![Page 9: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/9.jpg)
9 www.xebia.fr / blog.xebia.fr
tomcat-dbcp-6.0.16.jar
La modularité en JavaL’existant : les classloaders hiérarchiques
JVM Classloader jce-provider.jar
rt.jar
Servlet Engine ClassLoader
servlet-api-2.5.jar
catalina-6.0.16.jar
Web App ClassLoadermy-model-1.0.jar
my-service-1.0.jar
hibernate-core-3.3.0.jar
jdom-1.0.jar
Difficile avec
JBoss AS
![Page 10: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/10.jpg)
10 www.xebia.fr / blog.xebia.fr
tomcat-dbcp-6.0.16.jar
La modularité en JavaL’existant : les classloaders hiérarchiques
JVM Classloader jce-provider.jar
rt.jar
Servlet Engine ClassLoader
servlet-api-2.5.jar
catalina-6.0.16.jar
Web App ClassLoadermy-model-1.0.jar
my-service-1.0.jar
jdom-1.0.jar
hibernate-core-3.3.0.jar
Difficile avec
Websphere
![Page 11: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/11.jpg)
11 www.xebia.fr / blog.xebia.fr
tomcat-dbcp-6.0.16.jar
La modularité en JavaL’existant : les classloaders hiérarchiques
JVM Classloader jce-provider.jar
rt.jar
Servlet Engine ClassLoader
servlet-api-2.5.jar
catalina-6.0.16.jar
Web App ClassLoadermy-model-1.0.jar
my-service-1.0.jar
hibernate-core-3.3.0.jar
Repackaging
Tomcat
jdom-1.0.jar
![Page 12: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/12.jpg)
12 www.xebia.fr / blog.xebia.fr
La modularité en JavaL’existant : les classloaders hiérarchiques
Web App ClassLoader my-model-1.0.jar
my-service-1.0.jar
cxf-2.1.jar
Spring-2.5.jar
Spring-2.0.jar
Impossible
Il est aujourd’hui impossible de charger deux versions d’un même jar dans une web app !
JVM Classloader
Servlet EngineClassLoader
![Page 13: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/13.jpg)
13 www.xebia.fr / blog.xebia.fr
La modularité en JavaL’existant : maven 2
Maven 2 Versionnage des jar Description des dépendances
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <name>My Service</name> <groupId>com.mycompany</groupId> <artifactId>my-service</artifactId> <packaging>jar</packaging> <version>1.0</version> <dependencies> <dependency> <groupId>com.mycompany</groupId> <artifactId>my-backend</artifactId> <version>1.0</version> </dependency> </dependencies></project>
version
dépendances
![Page 14: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/14.jpg)
14 www.xebia.fr / blog.xebia.fr
La modularité en JavaL’existant : maven 2
Les limitations Dépendances explicites seulement au build (pas runtime)
Pas de visibilité bundle
Les défis Qualité des méta-données
Dépendances transitives
Conflits de versions
Dépendances par nom de bundle vs. par package
![Page 15: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/15.jpg)
15 www.xebia.fr / blog.xebia.fr
La modularité en JavaLe futur : JSR 291 : Dynamic Component Support for Java SE
OSGi rejoint le JCP
OSGi Unité de travail : le bundle Gère la visibilité des bundles et leur dépendances, leur versionning Dynamique (cycle de vie des bundles géré au runtime) Orienté service
» Les bundles publient des services dynamiquement» Recherche de services» Bind» Cycle de vie des services lié aux bundles qui les supportent
![Page 16: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/16.jpg)
16 www.xebia.fr / blog.xebia.fr
La modularité en JavaLe futur : JSR 277 – Java Module System
Associé à JSR 294 - super packages
Utilisation des annotations Java 5 pour décrire les dépendances et les version
@Version("1.0") @ImportModules({ @ImportModule(name="com.mycompany.mybackend", version="1.0+") }) super package com.mycompany.myservice { export com.mycompany.myservice.*;}
Vive opposition des partisans d’OSGI
![Page 17: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/17.jpg)
www.xebia.fr / blog.xebia.fr
OSGi AllianceL’histoireLe fonctionnementOSGi Alliance et le JCP
![Page 18: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/18.jpg)
18 www.xebia.fr / blog.xebia.fr
OSGi AllianceL’histoire
Consortium créé en 1999
Objectifs initiaux : Java dans le monde embarqué (domotique, automobile, telco, etc)
Membres : EDF, Siemens, BMW, Ericsson, Nokia, Motorola, Sprint, IBM, SpringSource, Sun, etc
Date clefs» 1999 : l’embarqué et networked devices, la domotique, l’automobile» 2003 : les télécommunications» 2004 : virage open source (Eclipse)» 2006 : server side Java
Besoin d’être léger et dynamique dès l’origineBesoin d’isolation des composants fournis par différents éditeurs
![Page 19: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/19.jpg)
19 www.xebia.fr / blog.xebia.fr
OSGi AllianceLe fonctionnement
Les experts group Core platform EG Vehicle EG Mobile EG Entreprise EG Residential EG
Entreprise Expert Group Gestion de la scalabilité (multi-conteneur, multi-processeurs) Ouverture à d’autres languages Distribué (SCA) Intégration à JavaEE Modèle de composants (Spring DM)
![Page 20: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/20.jpg)
20 www.xebia.fr / blog.xebia.fr
OSGi AllianceOSGi et le JCP
1999 : JSR 8 – OSGi specification => retirée en 1999
2006 : JSR 291- Dynamic Component Support for JavaTM SE Spec Lead : IBM Craintes que le JCP n’ai qu’un rôle de validation du travail de l’OSGi
Alliance Craintes du chevauchement avec JSR 277 – Java Module System
2008 : Sun embauche Richard Hall (Apache Felix) => intégration d’OSGi dans Glassfish
![Page 21: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/21.jpg)
21 www.xebia.fr / blog.xebia.fr
OSGi AllianceOSGi et le JCP
Une communauté plus fermée que le JCP ?
Exclusive SunPartagéeDirection
Variés : entreprises, universitaires, individuels
Principalement des entreprisesMembres
De plus en plus publicsConfidentielsDébats
PublicMembres payantsReference Impl
Membres payants + OSSMembres payantsTCK
PublicMembres payantsSpécifications drafts
PublicPublicSpécifications release
JCPOSGi Alliance
OSGi Alliance Full Membership : 20 k$/an
![Page 22: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/22.jpg)
www.xebia.fr / blog.xebia.fr
La plateforme OSGILes bundlesLe réseau de classloader
![Page 23: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/23.jpg)
23 www.xebia.fr / blog.xebia.fr
La plateformeLes bundles
Unité de déploiement sur la plateforme Un simple jar
Plus quelques entrées dans META-INF/MANIFEST.MF Peut être utilisé hors contexte OSGi
Déclaration des dépendances
niveau package
Déclaration des packages exportés
Description du bundle
Les contraintes du Manifest
![Page 24: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/24.jpg)
24 www.xebia.fr / blog.xebia.fr
La plateformeLes bundles
Le versionning major.minor.micro.qualifier
» 3.4.0.v20080603-2000 [version, version] (version, version) [version, version)
![Page 25: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/25.jpg)
25 www.xebia.fr / blog.xebia.fr
La PlateformeLe réseau de ClassLoaders
gui-grand-public-1.9
web-services-1.7
web-services-1.6
domaine-metier-1.3
Audit&logs-1.0
domaine-metier-1.2dao&cache-1.1
Exemple de graphe de modules
![Page 26: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/26.jpg)
26 www.xebia.fr / blog.xebia.fr
La PlateformeLe réseau de Class Loaders
web-services-1.6
Audit&logs-1.0
domaine-metier-1.2Classloaderfiltrant
MANIFEST
Export-package : …
MANIFEST
Import-package …
Import−Package: demo.audit;version=1.0.0
Seulement les classes de demo.audit
Export−Package: demo.audit;version=1.0.0
![Page 27: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/27.jpg)
27 www.xebia.fr / blog.xebia.fr
La plateformeLe conteneur
Environnement d’exécution des bundles
Standalone ou embarqué
Gère le cycle de vie des bundles
![Page 28: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/28.jpg)
28 www.xebia.fr / blog.xebia.fr
La plateformeLe cycle de vie des bundles
![Page 29: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/29.jpg)
29 www.xebia.fr / blog.xebia.fr
La plateformeLe Service Registry
Cœur du framework
Gère les services. Permet de Publier des services Rechercher des services Binder des services
Découplage entre services
![Page 30: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/30.jpg)
30 www.xebia.fr / blog.xebia.fr
Assemblage des services OSGIBundleActivator et ServiceTracker
Enregistrement du service
Dé-enregistrement implicite du service
Gestion du cycle de vie du Bundle
![Page 31: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/31.jpg)
31 www.xebia.fr / blog.xebia.fr
Assemblage des services OSGIBundleActivator et ServiceTracker
Le manifest sert à déclarer le Bundle-Activator
Déclaration de l’Activator
![Page 32: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/32.jpg)
32 www.xebia.fr / blog.xebia.fr
Assemblage des services OSGIBundleActivator et ServiceTracker
Création du ServiceTracker
Fermeture du ServiceTracker
Gestion du cycle de vie du Bundle
Injection du ServiceTracker
![Page 33: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/33.jpg)
33 www.xebia.fr / blog.xebia.fr
Assemblage des services OSGIBundleActivator et ServiceTracker
Injection du ServiceTracker
Résolution du service à chaque utilisation
Gestion de l’indisponibilité
Le ServiceTracker est intrusif sur le code !
![Page 34: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/34.jpg)
34 www.xebia.fr / blog.xebia.fr
Assemblage des services OSGIBundleActivator et ServiceTracker
Enregistrement d’une servlet sur le HttpServiceSurcharge des méthodes addingService(…) et removedService(…)
ServiceTracker devient vite lourd à gérer !
![Page 35: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/35.jpg)
35 www.xebia.fr / blog.xebia.fr
Assemblage des services OSGIBundleActivator et ServiceTracker
Mécanisme de gestion des dépendances le plus stable et mature d’OSGi
Très en retard par rapport aux mécanismes d’injection de dépendances Java actuels (EJB 3, Spring, Google Juice, etc)
Contraint par les limites des Execution Environments OSGI ?
![Page 36: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/36.jpg)
36 www.xebia.fr / blog.xebia.fr
Assemblage des services OSGIDeclarative Service
Créé en 2005 (OSGI R4) Mis à jour via la RFC 134
![Page 37: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/37.jpg)
37 www.xebia.fr / blog.xebia.fr
Assemblage des services OSGIDeclarative Service
Semble peu utilisé
Techniquement limité Ne gère pas les dépendances intra-bundles
Remis en cause par RFC 124 (Spring DM)
![Page 38: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/38.jpg)
38 www.xebia.fr / blog.xebia.fr
Assemblage des services OSGISpring DM
En cours de standardisation pour OSGi R4.2 RFC 124
![Page 39: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/39.jpg)
39 www.xebia.fr / blog.xebia.fr
La plateformeLes services
Exemples Log Service Http Service Configuration Admin Service Preferences Service Event Admin Service
Plus orientés embarqué / J2ME que informatique de gestion / Java 5+ Fonctionnalités limitées Ex: HttpService ne gère ni les Filter ni les ServletContextListener
![Page 40: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/40.jpg)
40 www.xebia.fr / blog.xebia.fr
La plateformeLes implémentations Open Source
Eclipse Equinox Apache Felix Knopflerfish (maintenu par Makewave) ProSyst Open Source mBedded Server Equinox Edition Newton Project
La liste complète http://www.osgi.org/Markets/HomePage
![Page 41: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/41.jpg)
41 www.xebia.fr / blog.xebia.fr
La plateformeLes chantiers en cours
Spécifiés dans le draft sur OSGi R4.2
Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué
» Appel de services distants
Nouveau modèle de composant En concurrence avec Declarative Service (OSGI R4 !) RFC 124 – « A Component Model for OSGi »
» Standardisation de Spring DM
![Page 42: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/42.jpg)
42 www.xebia.fr / blog.xebia.fr
Demo OSGiDescription
Un service dépend d’un backend Un service expose une servlet Les composants utilisent Log4j Upgrade à chaud du service
![Page 43: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/43.jpg)
43 www.xebia.fr / blog.xebia.fr
Demo OSGiBundles & packages
business-service-1.0
backend-service-1.0
log4j-1.2.13
org.osgi.service.http.*-1.2.0
javax.servlet.*-2.4
backend-service-1.1
![Page 44: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/44.jpg)
44 www.xebia.fr / blog.xebia.fr
Demo OSGiImport d’un service
business-service-1.0
backend-service-1.0
log4j-1.2.13
org.osgi.service.http.*-1.2.0
javax.servlet.*-2.4
backend-service-1.1
![Page 45: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/45.jpg)
45 www.xebia.fr / blog.xebia.fr
Demo OSGiExposition d’une servlet
business-service-1.0
backend-service-1.0
log4j-1.2.13
org.osgi.service.http.*-1.2.0
javax.servlet.*-2.4
backend-service-1.1
![Page 46: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/46.jpg)
46 www.xebia.fr / blog.xebia.fr
Demo OSGiUpgrade à chaud d’un bundle
business-service-1.0
backend-service-1.0
log4j-1.2.13
org.osgi.service.http.*-1.2.0
javax.servlet.*-2.4
backend-service-1.1
![Page 47: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/47.jpg)
47 www.xebia.fr / blog.xebia.fr
Demo OSGiLog4j !
business-service-1.0
backend-service-1.0
log4j-1.2.13
org.osgi.service.http.*-1.2.0
javax.servlet.*-2.4
backend-service-1.1
log4j bundle fragmentLog4j.properties
![Page 48: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/48.jpg)
www.xebia.fr / blog.xebia.fr
OSGi dans le monde Java EEClient sideServer Side
![Page 49: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/49.jpg)
49 www.xebia.fr / blog.xebia.fr
OSGi dans le monde Java EEClient side
Eclipse RCP 1ère utilisation d’OSGi dans le monde Open Source Ajout de fonctionnalités propriétaires
» Eclipse-BuddyPolicy et Eclipse-RegisterBuddy » Les Features» La gestion des updates» Les extensions
LimitationsCycle de vie des plugins : On redémarre toujours Eclipse après avoir activé un
plugin
![Page 50: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/50.jpg)
50 www.xebia.fr / blog.xebia.fr
OSGi dans le monde Java EEServer side – Middlewares
Isolation middleware / application Isolation des composants du middleware (multi versions) Lifecycle (start, stop, install, uninstall)
JVM
OSGI Container
Servlet 2.4Container
Servlet 2.5Container
EJB 2.1Container
Tx ServiceJTA 1.0.1B
Messaging ServiceJMS 1.1
High AvailabilityService
LoggingService
EJB 3.0Container
javax.servlet.*javax.servlet.http.* … javax.**
…
exports OSGi stricts pour éviter les conflits avec les dépendances
des applicationsMon Application
![Page 51: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/51.jpg)
51 www.xebia.fr / blog.xebia.fr
OSGi dans le monde Java EEServer side - Middlewares
Websphere 6.1 (2006) est full-osgi Classloader OSGI pour isoler les applications du middleware Equinox est le conteneur de Websphere Tous les jars sont osgi-fiés (repository IBM) Compositions Application Server, ESB, Process Server, Portal, Telecom
Server
Weblogic 10 (2007) utilise OSGI Plusieurs jars sont osgi-fiés
Glassfish Glassfish démarre sur Equinox et Knopflerfish
![Page 52: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/52.jpg)
52 www.xebia.fr / blog.xebia.fr
OSGi dans le monde Java EEServer side - Middlewares
Service Mix 4 Réécriture full OSGI / Spring DM de ServiceMix Service Mix Kernel est un enrichissement d’un conteneur OSGI Possibilité de déployer des médiations en packaging JBI ou OSGI
Spring DM Propose OSGI en alternative à Java EE
Autres acteurs Java EE : Jonas, JBoss
Ces projets utilisent-ils OSGI basic ? ServiceTracker ?
![Page 53: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/53.jpg)
www.xebia.fr / blog.xebia.fr
Bonnes pratiques OSGiLes enjeux d’OSGi pour Java EE
![Page 54: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/54.jpg)
54 www.xebia.fr / blog.xebia.fr
Bonnes pratiques
Préférer Import-Package à Require-Bundle Utilisation des ranges de versions Bien designer ses bundles
Prévoir le couplage de ses bundles Ne pas tout mettre dans un bundle
Séparer les APIs exportées des implémentations Penser Orienté Service Gérer le cycle de vie des dépendances
ServiceTracker, Spring DM, Declarative Service
![Page 55: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/55.jpg)
55 www.xebia.fr / blog.xebia.fr
Les enjeux d’OSGi pour Java EE
L’utilisation d’anti-pattern OSGi Class.forName / Factory Pattern System.exit()
Réutilisation des libraries existantes non-OSGi Repackaging et prolifération de repositories
OSGi.org, Spring, Servicemix, IBM (privé), etc Modification du source code (http://www.dynamicjava.org/) Bytecode patching au runtime (knoplerfish)
Gestion des meta données OSGi: Entrées dans le manifest Java Module System: annotations et nouvelle syntaxe java
![Page 56: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/56.jpg)
56 www.xebia.fr / blog.xebia.fr
Les enjeux d’OSGi pour Java EE
Problématique cross-bundle AOP Sécurité Transaction
Testabilité des bundles
Packaging des applications Archive .par chez Spring Features chez eclipse
![Page 57: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/57.jpg)
57 www.xebia.fr / blog.xebia.fr
Conclusion
Socle robuste et éprouvé
Répond à des problématiques techniques complexes
Manque de maturité dans le monde Java EE
En pleine évolution pour les aspects Java EE
![Page 58: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/58.jpg)
58 www.xebia.fr / blog.xebia.fr
Questions
![Page 59: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/59.jpg)
SponsorsSponsors
www.parisjug.orgwww.parisjug.orgOSGIOSGI14/10/200814/10/2008Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
![Page 60: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/60.jpg)
www.parisjug.org
Merci de votre Merci de votre attention!attention!
Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
![Page 61: OSGi - ParisJUG...2008/10/14 · Spécifiés dans le draft sur OSGi R4.2 Ajout de services « Java EE » RFC 98: gestion des transaction via JTA et/ou XA RFC 119: OSGi distribué](https://reader033.fdocuments.in/reader033/viewer/2022043004/5f87fcfb6f12fd062249a427/html5/thumbnails/61.jpg)
LicenceLicence
www.parisjug.orgwww.parisjug.orgOSGIOSGI14/10/200814/10/2008Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
http://creativecommons.org/licenses/by-nc-sa/2.0/fr/