|[virgo-dev] Virgo kernel startup order fix|
I’ve been working these days on fixing the startup order of Virgo’s kernel. That would bring several benefits such as enable P2 provisioning support and allow Virgo to work with other OSGi launchers, such as Eclipse’s launcher, which starts bundles in random order.
Currently the work is progressing quite good. All known scenarios are fixed with no changes to the Spring DM application contexts currently present in Virgo. Now the prototype enables lazy initialization of configuration from ConfigAdmin which was not possible with the version of SpringDM Virgo uses. Several declarative service(DS) components were introduced, one of them serving as an accessor to the configurations from ConfigAdmin. The changes are uploaded to a branch named “bug333474-DS-remove-startup-order”. In order to get it running one has to copy the DS bundles(org.eclipse.equinox.ds, org.eclipse.equinox.util and osgi.services) in kernel\lib and repository\usr in order to start Virgo at all. The manual steps are reduced to a minimum – only copy the DS bundles, that is until the DS bundles can be referenced through Ivy.
As for the impact on users – the experience currently is exactly the same. Since so far no Spring Dynamic Module has been replaced with DS component so all supportability goodness SpringDM brings is still there.
The first milestone was to get Virgo start normally. Now I’ll work on runnig the tests and will continue to experiment with some permutations of the launch.properties to see if there are still hidden dependencies. I already tried starting Virgo with Eclipse’s launcher which was quite useful –uncovered a few things, still need to experiment with it, though. Also I might’ve found a way to fix the startup order with even less changes but will have to look into it more thoroughly.
I'll further update this thread with my progress.