Hi, I have chosen to start the "Watcher" Bundle before the other ones so it receive signals when bundles are started (it is not the neater way but it is working for my case).
I have noticed that the getBundles method in Jconsole using JMX is really slow and CPU consuming, i think it is a solved in current release (not tested). So I would not try the call to bundleContext.getBundles (even if it would be nicer to check previously started bundle). Thanks Regards Hervé On 1/16/12, Andreas Pieber <[email protected]> wrote: > Happy to hear that it works; btw, wouldn't it be easier retrieving all > bundles using bundleContext.getBundles and find the ones you want to > start/stop there? > > Kind regards, > Andreas > > On Mon, Jan 16, 2012 at 18:46, Hervé BARRAULT > <[email protected]>wrote: > >> Hi, >> thanks for quick answers. >> >> By registering using activator it is working well for notification :) >> >> public class Test implements BundleListener, BundleActivator { >> >> public void start(BundleContext arg0) throws Exception { >> arg0.addBundleListener(this); >> } >> >> public void stop(BundleContext arg0) throws Exception { >> arg0.removeBundleListener(this); >> } >> >> public void bundleChanged(BundleEvent arg0) { >> final Bundle bundle = arg0.getBundle(); >> >> System.out.println("SIGNAL" + bundle.getSymbolicName() + " - " >> + arg0.getType()); >> >> } >> >> } >> >> now i think i can start/stop bundles by keeping references. >> As i can't determine before the number of the bundle i should use the >> symbolicName (not perfect if we have to use different versions). >> >> Regards >> Hervé >> >> >> On 1/16/12, Andreas Pieber <[email protected]> wrote: >> > Hey, >> > >> > On Mon, Jan 16, 2012 at 18:23, Hervé BARRAULT >> > <[email protected]>wrote: >> > >> >> I haven't register the Bundle Listener, as i thought exposing a >> >> BundleListener as an OSGI service does something like this. >> >> >> > >> > "Exposing a BundleListener" typically means register it in the OSGi >> > registry; and this is done as JB had shown. >> > >> > >> >> Is this bundleContext linked to the current bundle or all bundle ? >> >> >> > >> > Well, bundleContext.getBundle() will return the "current" bundle; but >> > you >> > can also access other bundles using bundleContext.getBundle(ID) or one >> > of >> > the other overloads. >> > >> > >> >> My Bundle "Checker" shall listener to other bundle and manipulate >> >> them. I will try the BundleActivator to get the BundleContext. >> >> >> > >> > If you really want to check other bundles once they come up the >> > BundleListener is the perfect way to go. You can access the bundle >> > object >> > of the bundles started through the event. so you can also manipulate >> > them >> > there. >> > >> > Btw, don't you want to upgrade to a newer Karaf version (although It's >> not >> > required for your specific use case) there where many bugs fixed between >> > 2.0.0 and 2.2.5. >> > >> > Kind regards, >> > Andreas >> > >> > >> >> >> >> Regards >> >> Hervé >> >> >> >> On 1/16/12, Jean-Baptiste Onofré <[email protected]> wrote: >> >> > Hi Hervé, >> >> > >> >> > Did you register your listener in the bundle context, with something >> >> like ?: >> >> > >> >> > getBundleContext().addBundleListener(myBundleListener); >> >> > >> >> > To start/stop bundle, you can do: >> >> > >> >> > getBundleContext().getBundle(id).stop()... >> >> > >> >> > Regards >> >> > JB >> >> > >> >> > On 01/16/2012 06:07 PM, Hervé BARRAULT wrote: >> >> >> HI, i'm using Karaf 2.0.0 and i'm trying to find a way to start/stop >> a >> >> >> bundle with java code. >> >> >> >> >> >> I have difficulties to find the right API to use (and which service >> to >> >> >> import). >> >> >> >> >> >> I have tried to create a BundleListener and expose it as an osgi >> >> >> service (in order to being notified of bundles start/stop) but i'm >> not >> >> >> notified. >> >> >> I thought getting data about bundles and being able to manipulate >> >> >> it. >> >> >> >> >> >> What are the correct steps to do this ? >> >> >> >> >> >> Regards >> >> >> Hervé >> >> > >> >> > -- >> >> > Jean-Baptiste Onofré >> >> > [email protected] >> >> > http://blog.nanthrax.net >> >> > Talend - http://www.talend.com >> >> > >> >> >> > >> >
