Generalize support for framework restart and update
---------------------------------------------------
Key: SLING-1888
URL: https://issues.apache.org/jira/browse/SLING-1888
Project: Sling
Issue Type: Improvement
Components: Launchpad
Affects Versions: Launchpad Base 2.2.0
Reporter: Felix Meschberger
Currently, the Sling launchpad implements controlled framework restart and
update by extending the Felix framework implementation class overwriting the
update() and update(InputStream) methods. This works fine with Apache Felix.
But it fails supporting other frameworks like Equinox where overwriting the
system bundle implementation is not as easy as in Apache Felix.
The solution might be to leverage the Bundle FindHook interface proposed for
OSGi R4.3:
find(org.osgi.framework.BundleContext context,
Collection<org.osgi.framework.Bundle> bundles)
This hook is called whenever the BundleContext.getBundles() or
BundleContext.getBundle(long) method is called. It allows the hook implementor
to limit the returned bundles or otherwise modify the collection of bundles
returned.
Our implementation would check whether the system bundle (bundle ID 0) is
amongst the returned bundles. If so, a wrapper is created which overwrites the
update() and update(InputStream) methods to actually implement Sling's
Launchpad functionality:
* Restart the framework in new class loader upon update()
* Update the framework and restart it in a new class loader upon
update(InputStream)
This would allow us to also fully support Equinox as a framework to launch.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.