● La soupe technologique
● Le portail : plate-forme d’entreprise
● L’existant
● La migration
Le nouveau Portail
● Un objectif : la modularité o Et si on pouvait déployer/installer des
briques logicielles JAVA à chaud ?
o Et si on pouvait faire coexister deux versions
d’une même implémentations ?
o Et si on pouvait consommer et exposer
dynamiquement des services ?
o Etc.
La soupe technologique : OSGi
● Bundle : l’unité de base o Petit livrable se présentant sous la forme d’un JAR
o Activator : implémente BundleActivator, point d’entrée et de
sortie du bundle
o Manifest : fichier text décrivant le bundle (version,
dépendances, etc.)
La soupe technologique : OSGi
● La couche service
o Permet de gérer la consommation et
l’exposition dynamique des services
o Le service est là / pas là / sera là / doit être
là / était là mais il est parti
La soupe technologique : OSGi
● Le cycle de vie : une norme o Géré par l’API : c’est comme ça et puis c’est
tout !!!
La soupe technologique : OSGi
● La couche modules o Décrit la manière dont un bundle importe et
exporte du code
o Différent de la notion de service
o MANIFEST.MF au centre de ce mécanisme
La soupe technologique : OSGi
● La couche sécurité o Qui a le droit d’accéder à quoi
● L’environnement d’exécution o Chaque instance de bundle est cloisonnée
o Plus de contexte commun
o Configuration des imports/exports
fondamentale
La soupe technologique : OSGi
● Articulation autour d’une spécification o Version actuelle : OSGi release 6 (Juin
2014)
o Version SCL : OSGi release 5 (Juin 2012)
● Implémentation o Felix
o Equinox (Eclipse)
La soupe technologique : OSGi
● Implémentations Apache d’OSGi o Core : principe de base (lifecycle,
environnement d’execution)
o Compendium : service standardisé (log,
event, configuration, persistence, etc.)
La soupe technologique : Felix
● Peut être le contenant ou le contenu d’un
autre contexte d’exécution o Chez SCL : instancié par une webapp
(portal, backoffice-externe)
La soupe technologique : Felix
● Fait parti du projet Felix Apache
● Facilite la gestion de la modularité OSGi
● Diminue drastiquement la “boiler plate”
inhérente à OSGi
La soupe technologique : iPOJO
● Rend l’exposition et la consommation de
service beaucoup plus simple
La soupe technologique : iPOJO
Expose un service
Consomme un service
● Le pattern Factory à l’honneur o Chaque composant sous entend une factory gérée
par iPOJO et dont sont issues les instances
o Possibilité de récupéré une référence de cette factory
La soupe technologique : iPOJO
● Framework de création d’application web o Fourni un jeu de composants
o Basé sur GWT
o Développement en JAVA
La soupe technologique : Vaadin
● Une stack technique partagée
● Factorisation o Authentification
o Composants graphiques / Menu
● Unicité de la charte graphique
● Cohérence ergonomique
Le portail : plate-forme d’entreprise
● Objectif initial : proposé une alternative
crédible à Notes
● Basé sur Felix, Vaadin, Spring et Gemini
● Première version faites un week-end
L’existant
● Problèmes rencontrés o Pas de gestion réellement dynamique
o Rechargement à chaud souvent impossible
o Mauvaise gestion des propriétés
o Pas de gestion du bus d’event
o Fichier de configuration Spring nécessaire
o Pas de migration sur Spring 4 prévu à moyen
terme
L’existant
● Autres problèmes o Remontée des erreurs aléatoire et peu parlant
o Gestion du publish/subscribe via un bundle
non-system
o Beaucoup, beaucoup de package-export à
gérer dans le felix.properties
L’existant
● Anticiper la migration Spring 4
● Profiter des retex pour améliorer
o Un véritable rechargement à chaud
o Un mécanisme d’event natif
o Une meilleure articulation View / Presenter
o Une meilleure gestion des erreurs et des log
o Une amélioration de la productivité
La migration
● Mise en place de bundle system issue du projet
Apache Felix
La migration
Avant
MIGRATION !!!!!
Après
● Instanciation des modules via un fichier de config
● Création des vues via un fichier de config
La migration
● Une ligne de commande pour simplifier le debugage et
mieux appréhender l’environnement
La migration
● Une ligne de commande pour simplifier le debugage et
mieux appréhender l’environnement
La migration
● Une ligne de commande pour simplifier le debugage et
mieux appréhender l’environnement
La migration
● Et plus encore
o Installation des dépendances automatiquement
(OBR)
o Push sur le portail pour interagir directement avec
l’utilisateur
o Etc.
La migration