2009-11-30 6 views
2

intégré à la fin je vais peut-être fournir une aide afin que l'activateur peut importer et exporter des services et d'autres types de méta-données sur le système.Avec OSGI comment peut-on passer des paramètres d'un hôte à un faisceau

Par paramètres, je veux dire les objets en général, peut-être via une carte. ce serait génial si un paquet en installant un autre avait un mécanisme pour envoyer des paramètres au paquet de départ. Je suppose que je pourrais inclure un service sur le dernier paquet et l'utiliser comme un service de configuration, mais cela semble un peu anormal.

+1

Vous devez ajouter plus d'informations à cette question car il ne sait pas ce que vous recherchez. Demandez-vous comment fournir les propriétés de configuration à votre application et les rendre visibles aux bundles OSGi? – SteveD

Répondre

5

Si vous voulez « envoyer » des paramètres de configuration à un faisceau de départ, vous pouvez utiliser les services OSGi standards comme Configuration Admin Service. Si vous voulez faire circuler des objets arbitraires, vous devriez probablement utiliser le registre de service OSGi.

Pourriez-vous clarifier votre question? Qu'est-ce que vous entendez par «hôte» et «intégré»? Quel genre d'aide voulez-vous fournir? Plus important encore, quels sont les paramètres de type que vous voulez passer d'un paquet à l'autre?

+0

Le truc que je voulais envoyer serait une combinaison de pojos et d'autres services. –

+0

Hôte = le service OSGi fournissant la configuration, Embedded = service consommant les paramètres et offrant d'autres services. –

0

Pour ce faire (pré) configuration d'exécution d'un paquet, vous devez utiliser la configuration de service d'administration. Pour POJO etc vous pouvez suivre ce modèle:

  • Bundle A installe et démarre Bundle B
  • Bundle B enregistre un service "de configuration", par exemple avec l'interface acme.ConfigureB.
  • Bundle Un suivi des services avec l'interface acme.ConfigureB.
  • Chaque fois que A reçoit le rappel de suivi pour acme.ConfigureB il fait toutes les configurations nécessaires.
+0

Cela semble un peu bizarre, B doit maintenant inclure du code juste pour init lui-même. J'ai besoin de lire et de mieux comprendre le service d'administration Config avant de pouvoir sélectionner une réponse. –

+0

Vous devez savoir que les bundles OSGi A et B peuvent être démarrés dans n'importe quel ordre. Donc, B peut être installé et démarré avant l'installation de A, et vice versa. Vous devriez toujours suivre le modèle de tableau blanc (voir OSGi Spec): ne faites aucune supposition qu'un autre paquet ou service est démarré avant un autre ou est même présent. C'est un peu difficile à saisir au début, mais vous finirez avec un design bien meilleur. Ne faites pas de dépendance codage dur. – akr

+0

Notez que la gestion du cycle de vie et de l'ordre de démarrage devient nettement plus facile si vous utilisez des services déclaratifs. –