Clarifions encore un peu...
Prenons une application simple, composée de 2 modules (une bibliothèque de prêts) :
- Gestion des clients
- Gestion des livres
Dans le déploiement de base les livres et les clients sont stocké dans la DB de l'application, au travers des EJB Entity et Session. Un client lourd en java SE se connecte au serveur d'application et propose l'UI principale. C'est cette architecture qui est déployée en général.
Un nouveau client dispose déjà d'une base de client (accessible par exemple en services web ou d'une autre manière ça n'a pas d'importance). Il serait inadéquat de migrer leur système de gestion des clients car il est partagé avec d'autres entreprises. L'idéal serait de réécrire uniquement le code métier de l'EJB Session (qui par exemple utilise des services web pour se connecter à l'autre système plutôt que de se connecter aux EJB Entity de l'application). De cette manière en déployant le nouveau module à la place du module de base l'application (une contrainte du gestionnaire de module empêche l'installation des deux modules en //) fonctionne (sans avoir à recompiler-reversioner le client et le module de gestion des livres).
Evidement dans ce cas-ci il paraîtrait plus judicieux de synchroniser notre DB avec l'autre système, mais si par exemple un client veux une version plus évoluée du module de gestion de leurs clients. On pourrait leur coder un nouveau module côté serveur ainsi qu'un nouveau module côté client, mais ne pas toucher au module de gestion des livres (car le nouveau client utilise les mêmes interfaces que celles du module de base, ce n'est que la partie client spécifique à le gestion des clients qui utilisent une interface plus spécialisée).
Message édité par fatypunk le 04-10-2007 à 15:15:45