Bonjour
Dans le cadre du développement d'une application utilisant OSGi, je m'interroge sur une partie de l'architecture.
Dans l'application il peut y avoir un bundle de type "logger". Ainsi d'autres bundles peuvent venir écrire des messages s'ils le désirent ("ouverture du fichier", "analyse en cours...", etc.).
OSGi oblige, il n'est pas certains que le bundle "logger" soit présent dans l'application.
La première solution consisterait à ce que chaque bundle vérifie la présence d'un "logger" avant de l'utiliser. Ce que je trouve un peu lourd (recherche du bundle dans le context + vérification si non null, et ce avant chaque message). Pour centraliser cette vérification chaque développeur de bundle pourrait écrire une classe dans leur bundle pour logger, du coup dans chaque bundle voulant logger il y a une part de code commune. Je me demande s'il n'est pas possible de la capitaliser ailleurs.
Afin de capitaliser et alléger le travail des développeurs de bundle, il serait possible de passer à chaque bundle, souhaitant logger, une interface permettant de le faire. Du coup le code serait capitaliser dans l'implémentation de cette interface. Par contre je me dis que le bundle devient fortement lié à un autre bundle juste pour logger des messages et ne pourra même pas démarrer sans ce dernier (ne pas démarrer juste pour une histoire de logger c'est un peu rude...).
Quelle solution est préférable ? Il y a-t-il une autre solution ?
Merci
Partager