Would the other bundles not need to do something actively to swap out
classes? You can't (as far as I know?) swap classes seamlessly from under
running java code without the code doing its own classloading, getting new
classloaders at the very least. I dont think OSGI tried to do what jrebel
for instance does.

On Tue, Nov 30, 2010 at 10:53, Nima Kaviani <[email protected]> wrote:

> Hello all,
>
> I have a ClassLoading issue with my bundles and I hope you can help me
> solve
> it.
>
> The problem is that I have two versions of a bundle ( let's name them A and
> A' ) exposing some services to other bundles in the application. Both
> versions have quite identical classes except for bundle A having some extra
> profiling code in all of its classes compared bundle A. Each bundle A or A'
> shares instances from its classes with other bundles either through service
> hooks or through explicit export- and import-package constructs.
>
> The problem I am facing is that when I swap A with A', the objects shared
> as
> OSGi services get swapped as expected, however the classes shared through
> explicit import and export constructs don't get swapped. Explicitly said,
> some of the classes from A remain loaded and accessible to classes in other
> bundles through the defining class loader that for the first time loads
> those classes. However, classes providing a service are swapped as a matter
> of replacing A with A'.
>
> I believe this is mainly because the defining loader that initially loads
> classes from A remains reachable by some other bundles in the application.
> However, it seems very difficult for me to detect which bundles are holding
> references and to which classes from the initially loaded classes in A. I
> wonder if there is any way to explicitly enforce the initially loaded
> classes to get garbage collected so that every single time I swap A and A',
> I get proper wiring for classes in each bundle as expected.
>
> I would very much appreciate any help or hint,
> -Nima
>
> --
> http://nima.magic.ubc.ca
>



-- 
John Bäckstrand

Reply via email to