Question

En utilisant Eclipse Virgo, j'ai un bundle avec un bean qui implémente BundleContextAware, j'ajoute un addbundleListener et je reçois les événements correctement lorsqu'un bundle est démarré ou arrêté, c'est OK. et avoir un bundle installé par l'événement BundleChanged.

Maintenant, j'ai besoin de récupérer tous les haricots du contexte d'application du bundle installé, quelle est la meilleure façon de récupérer le contexte d'application du bundle?

 public class PluginManager implements BundleContextAware {
               private BundleContext bundleContext;
          @Override
          public void setBundleContext(BundleContext bundleContext) {
            this.bundleContext = bundleContext;
            bundleContext.addBundleListener(this);
           }

              @Override
         public void bundleChanged(BundleEvent event) {


           Bundle bundle = event.getBundle();

    //HOW TO DO TO GET ALL BEANS OF BUNDLE

        }
}
Était-ce utile?

La solution

Je résolve mon problème avec un autre auditeur

  public class PluginManager implements BundleContextAware,OsgiBundleApplicationContextListener {
           private BundleContext bundleContext;
      @Override
      public void setBundleContext(BundleContext bundleContext) {
        this.bundleContext = bundleContext;
        bundleContext.addBundleListener(this);
       }

          @Override
     public void bundleChanged(BundleEvent event) {


       Bundle bundle = event.getBundle();

      //NOW use this method to receive destroy event

    }
    @Override
public void onOsgiApplicationEvent(OsgiBundleApplicationContextEvent event) {

             Bundle bundle = event.getBundle();

    PluginBundleDescriptor pluginBundleDescriptor = new PluginBundleDescriptor();
    pluginBundleDescriptor.setId(bundle.getBundleId());
    pluginBundleDescriptor.setName(bundle.getSymbolicName());
    pluginBundleDescriptor.setApplicationContext(event
            .getApplicationContext());

} }

et publier le service avec une interface osgibundleApplicationContextListener (c'est important)

 <osgi:service id="bundleContextTrackerOSGi" ref="coreModuleManager"
interface="org.springframework.osgi.context.event.OsgiBundleApplicationContextListener" />
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top