1. Document confidentiel - Ce document est la propriété exclusive d’Ippon Technologies et il ne peut être reproduit, publi é ou divulgu é sans son autorisation préalable Sommaire Effectifs par agence OSGi Are You Ready ? 25 Février 2010 Arrault Fabien Ippon Technologies
2.
3.
4. A chaque réutilisation ou distribution de cette création, vous devez faire apparaître clairement au public les conditions contractuelles de sa mise à disposition sous licence identique Creative Commons Share Alike.
5. Chacune de ces conditions peut être levée si vous obtenez l'autorisation du titulaire des droits sur cette œuvre.
6. Rien dans ce contrat ne diminue ou ne restreint le droit moral de l'auteur ou des auteurs.
7.
8. Il est défini par l'OSGi Alliance, consortium d'industriels fondé en 1999
9.
10. Cette techno est maintenant utilisée comme socle technique interne de la plupart des serveurs d'applications ou d'IDE comme Eclipse
17. Ce sont de archives java classiques (JARs) pour lesquelles le manifest contient des méta-données supplémentaires : Manifest-Version : 1.0 Bundle-ManifestVersion : 2 Bundle-Version : 1.0.0 Bundle-Name : Hello_world Bundle Bundle-SymbolicName : hello_world Bundle-Activator : com.ippon.osgi.Activator Import-Package : org.osgi.framework
18.
19.
20. Un bundle doit importer les packages java externes dont il a besoin Imports package com.B Exports package com.B Imports package com.C Exports package com.C
26. Le « Service Registry » permet aux bundles d'exposer ou de rechercher puis utiliser des services http://www.osgi.org/About/WhatIsOSGi
27.
28.
29.
30.
31. Mais un mécanisme de filtre permet aux bundles clients d'utiliser aussi les property pour sélectionner le ou les services qui les intéressent parmi les différents candidats
35. A influencer très fortement la création de la spécification OSGi nommée « Blueprint Container ». La v2 est d'ailleurs son implémentation de référence
36.
37. Import d'un service dans le contexte Spring : < beans xmlns = "http://www.springframework.org/schema/beans" xmlns:osgi = "http://www.springframework.org/schema/osgi" > < bean id = "helloworldservice" class = "com.ippon.osgi.hello.HelloWorldSingleton" /> < osgi:service ref = "helloworldservice" interface = "com.ippon.osgi.publichello.HelloWorldService" /> </ beans > < beans xmlns = "http://www.springframework.org/schema/beans" xmlns:osgi = "http://www.springframework.org/schema/osgi" > < osgi:reference id = "helloworldservice" interface = "com.ippon.osgi.publichello.HelloWorldService" /> < bean id = "consumer" class = " com.ippon.osgi.client.HelloConsumer " > < property name = "service" ref = "helloworldservice" /> </ bean > </ beans >
47. Il importe le package org.apache.log4j avec une contrainte sur la version : minimum 1.2.15 et strictement inférieure à 1.3 Manifest-Version : 1.0 Bundle-ManifestVersion : 2 Bundle-Version : 2.1.6 Bundle-Name : Logutil Bundle Bundle-SymbolicName : logutil Export-Package : com.ippon.osgi.util; version =2.1 Import-Package : org.apache.log4j; version ="[1.2.15,1.3)"
60. L'url est : http://www.springsource.com/repository/app/
61. Attention, le repository est ouvert mais le packaging des librairies est toutefois spécifique à SpringSource ( et pas forcément compatible avec d'autres repository )
62.
63.
64.
65.
66.
67. War allégé et librairies partagées : le war n'inclue plus les lib, il utilise les mécanismes OSGi pour déclarer ces dépendances. Les librairies sont partagées par toutes les applications.
68. War consommateur de services : idem avec utilisation de services exposées via OSGi Schéma extrait de http://static.springsource.org/s2-dmserver/2.0.x/programmer-guide/html/ch05.html#migrating-to-osgi-web
69.
70. Cela pourra peut-être inciter les serveurs d'application commerciaux à faire de même et promouvoir ce modèle de développement
71. Démo Démonstration : Déploiement de quelques bundles sous dm Server Et mise en oeuvre des concepts de base de OSGi
88. Mais comme par défaut ils exportent tous les packages du bundle et importent tous les packages dont il a besoin, certains pourront ne pas tirer parti du contrôle d'accès
89.
90.
91. Hors exposer simultanément différentes versions d'un service (associé aux versioning de leurs dépendances) est souvent problématique dans une approche classique.
92.
93. en production : les processus de livraison sont souvent gérés par des équipes différentes avec passage par une phase de qualification qui rend difficile la livraison d'une partie de l'application