[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[equinox-dev] Ordered starting/stopping of plugins
|
I am in the process of porting a Swing application to use Eclipse core
plugin engine. I have a need to control the start-up and shutdown order
of plugins. I was hopping that OSGi startlevels would provide this but
can't see that it does. What I basically need is something like unix
runlevels for starting and stopping plugins. The idea being that all
plugins in level 1 are started then all plugins in level 2 and so on
then when shutting down all plugins in level 2 are stoped followed by
all plugins in level 1. All plugins in each level should be started
concurrently in multiple threads, but the next level can't start until
all previous level plugins have finished. An example of my application
boot cycle could be:
==START APP======================================
---LEVEL-1-------------------------------------------------------------
core & libs
---LEVEL-2-------------------------------------------------------------
network & messageing
---LEVEL-3-------------------------------------------------------------
database
---LEVEL-4-------------------------------------------------------------
core ui plugins
---LEVEL-5-------------------------------------------------------------
main application plugins
==APP RUNNING===================================
...
==APP STOPPING===================================
---LEVEL-5-------------------------------------------------------------
main application plugins
---LEVEL-4-------------------------------------------------------------
core ui plugins
---LEVEL-3-------------------------------------------------------------
database
---LEVEL-2-------------------------------------------------------------
network & messageing
---LEVEL-1-------------------------------------------------------------
core & libs
==APP STOPPED====================================
Is there any way to do this already?
Does OSGi engine support multiple threads? Can plugins be started from
multiple threads?
My current idea is to create a RunLevel plugin that has an
ExtensionPoint that other plugins can regsiter them selfs at a
perticular runlevel. The RunLevel plugin will then be the main
application and iterate though the runlevels asking the OSGi engine to
start each plugin at the current level and then do something similar for
shutdown. It will ask each plugin to start from a new thread.
Will this work, any better ideas?
Many Thanks
Jasper Potts