Bonjour,
Après m'en être éloigné quelques temps, je reviens vers Java pour un projet et je suis en train d'évaluer les différentes briques (frameworks, serveurs...) que je vais être amené à mettre en place. J'aurais besoin de vos conseils pour le choix de technos me permettant de facilement mettre en place un système de plugins.
Mon application va essentiellement exposer des web services. Il y aura aussi une interface web, mais celle-ci ne m'inquiète pas trop (ce n'est pas le coeur de l'application, juste le management).
Je voudrais qu'une grande partie des fonctionnalités de l'application puissent être modulables grâce à un système de plugins. Du point de vue de l'utilisation, l'utilisateur final aurait simplement à déposer le plugin dans un dossier sur le serveur, éventuellement à cliquer sur un bouton dans l'interface, et les nouveaux plugins seraient ajoutés. Ca peut se faire différemment, mais je souhaiterais que ça ne dépasse pas ce niveau de complexité. Cette action ajouterait de nouvelles fonctionnalités (de nouveaux web services, une nouvelle page à l'interface d'admin...). Idéalement, il n'y a pas de redémarrage de l'application ni de mise en production compliquée.
Enfin je voudrais garder cela léger dans le sens où je veux garder un temps de réponse faible lors d'un appel à un web service. Je préfèrerais donc éviter de sérialiser et désérialiser 50 fois mes appels de fonction pour faire communiquer les objets entre eux à l'intérieur de l'application
Par rapport à ce besoin, j'ai deux questions :
- Quel framework ou brique logicielle permettrait d'arriver à ce type de système de plugin ? J'ai entendu parler d'OSGi, j'ai vu aussi que Spring pourrait éventuellement aider...
- Une fois un plugin mis sur le serveur, comment l'application principale trouverait-elle le plugin (ou l'inverse) et comment communiqueraient-ils ensembles (RMI, web services...).
J'aurais simplement besoin d'être pointé sur les bonnes technos. J'ai déjà regardé pas mal de chose, mais le monde Java est dense et rempli de choix, ce n'est pas toujours facile de choisir :o)
Partager