Yes a refresh is needed. The OSGi framework must keep the content of "A" around on uninstall if another bundle is using (wired) to one of "A"s exported packages. So in your case "B" is still allowed to remain resolved and in fact will still be able to load any classes from packages it imports from "A". When you do a refresh you are telling the framework to flush the removal pending bundles which forces any bundles depending on the removal pending bundle to be re-resolved.
This behavior seems odd at first but the goal is to allow staged updates
and uninstalls that do not disturb other bundles in the system until all
the updates and uninstalls are done and the management agent wants to do a
controlled refresh of the system.
Tom
From: Andrea Zoppello <[email protected]>
To: OSGi - Dev <[email protected]>
Date: 07/29/2010 05:42 AM
Subject: [osgi-dev] A question about UNINSTALL Operation...
Hi All,
I've a question about uninstalling bundles.
Suppose i've a simple situation where i've two bunldes "A" and "B" and
B is importing some packages from bundle "A".
My doubt is about "what should" happens to the state of "B" when i'm going
to uninstall bundle "A".
I was ( wrongly ) thinking that the container had automatically put B in
"INSTALLED" state, because A was uninstalled.
But i discovered that this would not happen ( at least with equinox) until
i
do a refresh???
So the question is, which is the right behaviour of the OSGi container
in that case??
Should i need a refresh anyway??
Thx
Andrea
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev
<<inline: graycol.gif>>
<<inline: ecblank.gif>>
_______________________________________________ OSGi Developer Mail List [email protected] https://mail.osgi.org/mailman/listinfo/osgi-dev
