développement d'une forge logicielle avec osgi
DESCRIPTION
NovaForge(TM) est une forge open-source permettant d'intégrer des outils visant à faciliter le développement de projets et de logiciels.Chaque outil est défini comme un fournisseur de services qui vient enrichir la liste des services disponibles de la forge. Pour appréhender les contraintes de modularité et de dynamisme, une plate-forme OSGI a été envisagée dès les premiers pas de la V3. Une autre des volontés de l'équipe a été de se baser principalement sur des standards J2EE (EJB3, JPA2, JMS) et des outils open-source bénéficiant d'une communauté importante (CAMEL, SHIRO, Shindig, OpenAuth...) pour bénéficier de l'experience acquise et faciliter les contributions externes. Nous allons vous présenter comment l'équipe a pu résoudre l'équation OSGI-J2EE en utilisant le travail effectué sur JOnAS et EasyBeans et l'implémentation IPojo. Guillaume Lamirand et Stéphane Benoist, Bull SASTRANSCRIPT
![Page 1: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/1.jpg)
NovaForge ™, une forge logicielle OSGi
Stéphane Benoist
Guillaume Lamirand
![Page 2: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/2.jpg)
2 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Plan
-Qu'est ce que NovaForge ™ ?
- Le produit
- Fonctionnalités
- Démonstration
-Architecture technique
- Retour d'expérience sur la version précédente
- Vue globale de la nouvelle version
-Retour d'expérience
-Pour le futur ...
![Page 3: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/3.jpg)
3 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Qu'est ce que NovaForge ™ ?
- Forge de développement collaborative et d'entreprise
- Mutualisation des moyens de développements
- Amélioration de la productivité des équipes
- Optimisation de la communication inter-équipe
- Stratégie open-source
- Intégration d'outils open-source
- Gestion des faits techniques – Mantis
- Gestion électronique de documents – Alfresco
- Gestion des sources – SVN
- ...
Le produit
![Page 4: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/4.jpg)
4 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Qu'est ce que NovaForge ™ ?
- Version 1 extension de GForge
- Forge interne à Bull France
- Version 2 basée sur le portail ExoPlatform
- Forge interne à Bull France: 50 projets avec 500 utilisateurs
- Bull Brésil et Espagne
- CETE, Schneider
- Version 3 avec un portail spécifique GWT
- Projet safr@n : Ministère de la défense
• Équipe répartie sur deux sites : 20 personnes
- Forge interne à Bull
• Migration
L'évolution du produit
![Page 5: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/5.jpg)
5 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Qu'est ce que NovaForge ™ ?
Données métiers
![Page 6: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/6.jpg)
6 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Qu'est ce que NovaForge ?
- Gestion des données métiers
- Choix des outils pour un projet
- Authentification unique
- Propagation des données vers les outils
Fonctionnalités
Fonctionnalités avancées
- Interaction entre les outils
- Agrégation de données – tableaux de bord
- Gestion de projet public ou privé
- Hiérarchie de forges
![Page 7: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/7.jpg)
7 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Démonstration
-Création d'un utilisateur
-Création d'un projet
-Validation du projet par l'administrateur
-Création d'un rôle
-Association des deux autres utilisateurs aux projets
-Ajout d'une application
Démonstration fonctionnelle
![Page 8: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/8.jpg)
8 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Plan
-Qu'est ce que NovaForge ™ ?
- Le projet et l'équipe
- Fonctionnalités
- Démonstration
-Architecture technique
- Retour d'expérience sur la version précédente
- Vue globale de la nouvelle version
-Retour d'expérience
-Pour le futur ...
![Page 9: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/9.jpg)
9 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Retour d'expériences sur la version précédente
-Interruption de service suite à maintenance
- Maintenance à chaud
• Mise à jour des services de la forge
• Ajout, suppression et mise à jour d'un outil
-Complexité de construire une forge à la carte
- À l'installation
- À l'utilisation
- Déployer à chaud des versions différentes d'un même
outil
-Besoin de modularité et de dynamisme
- Cloisonnement en terme de responsabilités
- Mise en place de services dégradés
![Page 10: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/10.jpg)
10 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Lexique
-Connecteur
- interface entre la forge et un outil
-« Plugin »
- Définie l'ensemble connecteur et outil
- Associé à la forge via un service spécifique
- un « plugin » ne peut pas venir étendre un autre « plugin »
![Page 11: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/11.jpg)
11 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Vue globale
![Page 12: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/12.jpg)
12 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Vue globale
![Page 13: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/13.jpg)
13 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Vue globale
![Page 14: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/14.jpg)
14 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Vue globale
![Page 15: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/15.jpg)
15 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Focus sur la partie « cœur »
Composition
![Page 16: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/16.jpg)
16 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Focus sur la partie « coeur »
- Proxy
- Contextuel
- Gère les permissions d'accès
• Développement d'un handler iPOJO
Structure
@Override
public Application addApplication(
@ResourceAuthorization(actions = { PermissionAction.CREATE }, resource = Application.class) final String pProjectId,
final String pApplicationLabel,
final UUID pPluginUUID,
final Map<String, String> pRolesMapping)
throws NodeServiceException
{
String username = this.authentificationService.getCurrentUser();
return nodeManager.addApplication(pProjectId, pParentNodeUri, pApplicationLabel, pPluginUUID,
pRolesMapping, username);
}
![Page 17: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/17.jpg)
17 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Focus sur la partie « coeur »
- Manager
- Contrôle de surface
- Contient les règles métiers
• Création d'un utilisateur
• Ajout de l’utilisateur au projet central
• Envoi d'un e-mail
- Session façade
- Composition de DAO
- Data Access Object
- Actions de persistance
Structure
@OSGiResource
private ProjectNodeSessionFacadeRemote projectNodeSessionFacadeRemote;
![Page 18: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/18.jpg)
18 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Eléments externes
- Apache Shiro
- Gestion des éléments de sécurité
• Authentification
• Permissions
- Intégré à OSGi au niveau package
• Développement d'un service spécifique
- Hibernate
- Gestion de la persistence
- Implémentation de JPA 2.0
- Intégré à JOnAS
![Page 19: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/19.jpg)
19 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Eléments externes
- OAuth
- Gestion du Single Sign-On
- Intégré dans le framework Shindig
- Non OSGi
- CXF - DOSGI
- Exposition de services OSGi en web services<property name="service.exported.interfaces" type="java.lang.String"
value="*" mandatory="true" />
<property name="service.exported.configs" type="java.lang.String"
value="org.apache.cxf.ws" mandatory="true" />
<property name="org.apache.cxf.ws.httpservice.context" type="java.lang.String"
value="/mantisService" />
![Page 20: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/20.jpg)
20 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Focus sur la partie «plugins»
Description
- Connecteur + outil
- Implémente une interface PluginService
- Détection de ce service par la forge
• Utilisation du WhiteBoard Pattern
- Gestion d'un cycle de vie spécifique
• Utilisation d'un annuaire interne
- Isolé grâce au Composite iPOJO
- Générique
- Services génériques pour la propagation
- Facilité d'intégration d'outils
![Page 21: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/21.jpg)
21 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Focus sur la partie «plugins»
Cycle de vie
![Page 22: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/22.jpg)
22 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Focus sur la partie «plugins»
Structure
![Page 23: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/23.jpg)
23 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Plan
-Qu'est ce que NovaForge ?
- Le projet et l'équipe
- Fonctionnalités
- Démonstration
-Architecture technique
- Retour d'expérience sur la version précédente
- Vue globale de la nouvelle version
-Retour d'expérience
-Pour le futur ...
![Page 24: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/24.jpg)
24 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Points positifs
- OSGi – iPOJO
- Gestion de versions
- Masque la complexité OSGi
- Facilite l'utilisation des patterns OSGi (Extender, WhiteBoard)
- Propose d'autres patterns (Composite)
- Concentration sur le code métier
- J2EE - Easybeans
- Mise en place d'un pont J2EE ↔ OSGi
- ESB – Camel Jonas
- Routage dynamique
- Utilisation de services OSGi
Facilité de développement
![Page 25: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/25.jpg)
25 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Points positifs
- Intégration d'un nouveau membre à l'équipe
- Utilisation d'un panel de services disponibles
- Intégration d'IHM sans compétence OSGi
- Contributions externes
- Équipe projet décentralisée
• Échange de services
Facilité de contribution
![Page 26: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/26.jpg)
26 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Points positifs
- OSGi
- Console Felix
- Introspection des bundles
- iPOJO
- Handler Architecture
- Introspection de l'état d'un POJO
- File install
- Configuration dynamique
Facilité de maintenance et de configuration
![Page 27: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/27.jpg)
27 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Points négatifs
- Cycle de dépendances
- A > B > C > D > A
- « Granularité de la modularité »
- Où s’arrêter ?
- Manager, Session Façade et DAO
Composition de services
Utilisation J2EE ↔ OSGi
- Cloisonnement des classloaders avec J2EE
- JNDI, JavaMail
ClassLoader theGoodOne = getClass().getClassLoader();ClassLoader theOldOne = Thread.currentThread().getContextClassLoader();Thread.currentThread().setContextClassLoader(theGoodOne);
Context initalContext = new InitialContext();
Thread.currentThread().setContextClassLoader(theOldOne);
![Page 28: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/28.jpg)
28 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Points négatifs
Utilisation J2EE ↔ OSGi
- Disponibilité en tant que bundle
Mise en place d'environnements distribués
- Utilisation de DOSGi avec Zookeeper
- Problème de synchronisation entre les services distants et
l'annuaire local
![Page 29: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/29.jpg)
29 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Plan
-Qu'est ce que NovaForge ?
- Le projet et l'équipe
- Fonctionnalités
- Démonstration
-Architecture technique
- Retour d'expérience sur la version précédente
- Vue globale de la nouvelle version
- Retour d'expérience
-Pour le futur...
![Page 30: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/30.jpg)
30 ©Bull, 2011 Novaforge, une forge logicielle OSGi
Pour le futur ...
Améliorations
- Distribution et répartition
- Dynamisme avancé des IHMs et uniformisation
- Gestion de la sécurité
- Accès aux services centraux
- Cloisonnement > OSGi 4.3
Nouveautés
- Mutualisation d'outils entre forge
- Intégration d'un module LDAP
- Gestion de la migration et mise à jour
- Passage à l'échelle
- Solution de supervision > JASMINe
![Page 31: Développement d'une forge logicielle avec OSGi](https://reader033.vdocuments.pub/reader033/viewer/2022051610/5492d37db47959384d8b46d0/html5/thumbnails/31.jpg)