![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)