Pregunta

Usando Eclipse Virgo tengo un paquete con un frijol que implementa BundLecontextAware, agrego un addBundLelistener y recibo los eventos correctamente cuando se inicia o se detiene un paquete, está bien. y tenga un paquete instalado por el evento BundLechanged.

Ahora, necesito recuperar todos los frijoles de contexto de aplicación del paquete instalado, ¿cuál es la mejor manera de recuperar el contexto de aplicación del paquete?

 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

        }
}
¿Fue útil?

Solución

Resuelvo mi problema con otro oyente

  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());

} }

y publique el servicio con una interfaz OSGibundleApplicationContextListener (esto es importante)

 <osgi:service id="bundleContextTrackerOSGi" ref="coreModuleManager"
interface="org.springframework.osgi.context.event.OsgiBundleApplicationContextListener" />
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top