You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Carsten Ziegeler (Jira)" <ji...@apache.org> on 2023/04/13 05:04:00 UTC

[jira] [Resolved] (SLING-1888) Generalize support for framework restart and update

     [ https://issues.apache.org/jira/browse/SLING-1888?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Carsten Ziegeler resolved SLING-1888.
-------------------------------------
    Resolution: Won't Fix

> 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
>            Priority: Major
>
> 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 was sent by Atlassian Jira
(v8.20.10#820010)