Je suis nouveau en utilisant OSGi, j'ai un doute sur le suivi des paquets. J'utilise BundleTracker parce que je veux des paquets spécifiques, et je veux savoir quel paquet j'utilise par leurs identifiants. Certains bundles (3) implémentent la même interface. Je veux suivre uniquement les bundles qui implémentent cette interface. Comment puis-je faire ceci?Suivi des paquets spécifiques dans OSGi
Répondre
Si vous souhaitez sélectionner un service spécifique, vous pouvez utiliser les propriétés du service pour cela. Ceci est complètement agnostique des faisceaux. Cela signifie que vous enregistrez vos implémentations de service avec des propriétés spécifiques (c'est ce à quoi correspond l'argument Dictionary
dans BundleContext.registerService
).
Vous pouvez ensuite utiliser BundleContext.getServiceReferences
et spécifier une expression de filtre (la syntaxe est décrite here) qui sélectionne uniquement le service avec la propriété correcte. Vous pouvez configurer ceci pour que vous obteniez toujours un tableau ou une collection avec au plus un élément.
Tout cela devient beaucoup plus facile si vous utilisez declarative services, car alors vous pouvez simplement spécifier la propriété et le filtre dans le descripteur de service du composant fournissant et consommant respectivement. Vous pouvez également configurer l'une ou les deux extrémités via le configuration admin (les propriétés de la configuration d'un composant de service sont propagées en tant que propriétés des services exposés ou des références consommées). Je vous suggère de vérifier les services déclaratifs avant de commencer un travail sérieux dans OSGi. Notez que vous devez faire attention à ne pas implémenter un câblage codé de cette façon, car cela détruirait la modularité.
Puis-je filtrer les implémentations avec ServiceTracker, puis, à partir de ces paquets suivis, je choisis le bon? –
Oui, 'ServiceTracker' fournit un [constructeur qui accepte un' Filter'] (http://www.osgi.org/javadoc/r4v42/org/osgi/util/tracker/ServiceTracker.html#ServiceTracker%28org.osgi. framework.BundleContext,% 20org.osgi.framework.Filter,% 20org.osgi.util.tracker.ServiceTrackerCustomizer% 29). –
- 1. Envoyer des paquets spécifiques avec HttpWebRequest
- 2. Suivi MVC pour des demandes spécifiques uniquement
- 3. Suivi des appels de méthodes spécifiques
- 4. Suivi des connexions et des paquets d'un programme
- 5. Gestion des dépendances dans OSGI bundle ServiceMix
- 6. Quelle est la structure du paquetage de paquets OSGi?
- 7. OSGI + SWT: Comment diviser la vue (GUI) en plusieurs paquets
- 8. où trouver les paquets spécifiques de Jasperreport?
- 9. OSGi et gestion des composants
- 10. Voir les dépendances des bundles osgi?
- 11. Structure du paquet OSGi
- 12. Dépendances transitives dans OSGi
- 13. Comment éviter class.forName() dans OSGi?
- 14. Suivi Bluetooth LE à l'aide de l'enregistreur de paquets Mac
- 15. Redémarrer le suivi des tâches et le suivi des tâches (suivi des tâches et suivi des tâches) dans CDH4
- 16. démarrer avec osgi + felix
- 17. Empêcher les notifications de mise à jour pour des paquets spécifiques dans Nuget Package Manager
- 18. ServiceTracker dans OSGi r4.1
- 19. OSGi BundleTracker: ordre des ensembles chenillés
- 20. Importer des paquets dans Go
- 21. Utiliser des paquets dans Ruby?
- 22. Aide Python - Analyse des paquets de paquets
- 23. Bibliothèques OSGi et héritées
- 24. Suivi des changements dans un tableau
- 25. OSGi: ajouter par programme des importations à un groupe
- 26. paramètre startlevel pour bundle OSGI
- 27. Réutilisation de l'arborescence des composants dans le bundle OSGI?
- 28. Backport du composant OSGI DS vers OSGI R4
- 29. Suivi des autorisations dans SharePoint
- 30. Suivi des valeurs dans Eclipse
Je voudrais vraiment savoir pourquoi vous voulez faire cela. Dans OSGi en fonction des paquets plutôt que des paquets est une odeur de code, de sorte que vous devriez essayer de l'éviter. Pouvez-vous expliquer pourquoi vous pensez en avoir besoin? –
Im nouveau dans OSGi, désolé si j'ai dit quelque chose qui ne va pas, je veux juste choisir un service spécifique parmi de nombreux faisceaux qui implémente la même interface. –