Hi all

I have observed repeatedly that reinstalling bundles of a custom Sling
(actually AEM) application causes a lot of activity in the OSGi
framework and thus can take quite a long time (10s of seconds to
minutes), which feels quite disruptive during development where
frequent deployments are common.

As far as I can see the Dynamic Class Loader Manager (DCLM) does "the
right thing" and restarts itself when a bundle whose classes have been
loaded via the dynamic class loader is reinstalled. The restart of the
DCLM then causes all services referencing it to restart as well,
causing, amongst others, scripting engines to restart and generally
triggering a cascade of service restarts.

This seems to be especially common with bundles providing model
classes that are used in rendering scripts (a prime use-case for
customizations), but is not limited to such cases. Note: it is
necessary to run a rendering script using the model before
reinstalling the bundle in order to cause the restarts

I was wondering if it wouldn't be possible to change the DCLM in a way
that it doesn't need to restart, but that it just swaps out the class
loader(s) behind the facade.I don't have much experience with
implementing custom class loaders, but I have a hunch that this may be
difficult to get right due to class loader internal caching of loaded
classes.

Is there anyone more knowledgable in this area who could provide an
assessment regarding the feasibility of such an approach?

Regards
Julian

Reply via email to