It depends on the launcher you are using.  Here I am going to assume you 
are using the Equinox launcher as-is.  The thing about 
FrameworkEvent.STARTED is that it is only fired when the framework has 
reached its "beginning framework start-level" during the call to 
Framework.start(). By default this is start-level 1.  The Equinox launcher 
simply uses the default beginning framework start level of 1 when it 
starts the framework.  Once the framework has been started the 
Framework.STARTED event is fired.  Then the Equinox launcher proceeds to 
set the framework start-level to its final start-level (this defaults to 4 
for the equinox launcher).  That ends up activating all the other bundles 
installed in the system when their start-level is met.  The Equinox 
launcher could have decided to set the configuration of the beginning 
start-level to the final one of 4 instead of starting the framework using 
the default beginning framework start-level

Your bundle is activated at start-level 3, this will be well after the 
Framework.STARTED event was fired.  Similarly the STOPPED events are not 
fired until the framework start-level has reached zero.  At that time your 
bundle will have already been de-activated.  When a bundle is de-activated 
all of its left-over listeners are flushed from the system so the 
framework does not hold onto stale objects and create a leak.  The only 
way to see one of the STOPPED events is to implement your own launcher 
which uses the Framework launching API.

The Equinox launcher could have decided to set the configuration of the 
beginning start-level to the final one of 4 instead of starting the 
framework using the default beginning framework start-level of 1 and then 
later setting the final framework start-level to 4.  That would have 
allowed your bundle to sometimes see teh STARTED event.  But even then 
there are times you would not see the event.  For example, if the bundle 
was installed and started after the framework was already started.

Tom





From:   Cristiano Gavião <[email protected]>
To:     Equinox development mailing list <[email protected]>
Date:   07/06/2016 06:15 AM
Subject:        [equinox-dev] receiving a FrameworkEvent.STARTED event?
Sent by:        [email protected]



Hello all,

I'm facing a problem and would like to ask for some information.

I have a bundle whose activator is registering a FrameworkListener inside 
the start() method. This bundle is set to start at level 3.

frameworkListener = new FrameworkListener() {
            public void frameworkEvent(FrameworkEvent event) {
                if (event.getType() == FrameworkEvent.STARTED) {
                    try {
                        initiateProcess();
                    } catch (Exception e) {
                        logger.error("Failure occurred while executing "
                                + "initial process.");
                    }
                }
            }
pBundleContext.addFrameworkListener(frameworkListener);

When executing that bundle with a OSGi Framework launcher then the unique 
event being captured is STARTLEVEL_CHANGED. I can't find a way to it to 
also receive a FrameworkEvent.STARTED.

And I'm not also receiving the FrameworkEvent.STOP after type a close 
command and leave the session.

Please, could someone explain me what am I missing here?

thanks,

Cristiano_______________________________________________
equinox-dev mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe 
from this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev



_______________________________________________
equinox-dev mailing list
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Reply via email to