Je suis suivi bundles OSGi comme ceci:OSGi BundleTracker: ordre des ensembles chenillés
BundleTracker<Foo> bundleTracker = new BundleTracker<>(context, Bundle.ACTIVE,
new BundleTrackerCustomizer<Foo>(){
@Override
public Foo addingBundle(Bundle bundle, BundleEvent event) {
...
}
@Override
public void modifiedBundle(Bundle bundle, BundleEvent event, Foo foo) {
...
}
@Override
public void removedBundle(Bundle bundle, BundleEvent event, Foo foo) {
...
}
});
Maintenant, si un paquet B a une dépendance A et B est commencé, alors que je comprends premier faisceau A sera activé Est-ce correct?
Le problème est que je reçois parfois des notifications sur certains bundles avant que je sois averti de leurs bundles dépendants. Alors, comment puis-je être averti dans l'ordre des dépendances (si B dépend de A, alors d'abord notifié à propos de A puis à propos de B)?
Mais si B utilise des classes de A, ne pas dire que A doit être activé avant B? – Puce
@Puce Non, ça ne veut pas dire ça du tout. La réponse de Bj est très claire. –
Serait-il le cas où le paquet A serait toujours résolu avant le paquet B? Si c'est le cas, et que vous avez absolument besoin d'obtenir les notifications dans l'ordre des dépendances, vous pouvez écouter les événements Bundle.RESOLVED, enregistrer l'ordre et en tenir compte lorsque vous recevez les événements Bundle.ACTIVATED. –