Hi Olivier, While I am not fluent with the history of OSGi, I try to answer from the point of view of a user of R4....
- I don't understand why an "update" does not trigger a "refresh" of the
targeted bundle.
Update is an operation on a bundle. Refresh is part of the Package Admin Service. When a bundle is updated, new wires will not be added to the old version of the bundle but to the new. But, old wirings to the old bundle remain intact. In fact, the existing bundles generally are not touched by a bundle update itself. Only when the Package Admin Service is refreshing the packages, which means cuttin wires to unsinstalled bundles and old versions of updated bundles and rewiring to current bundles, is the rest of the system touched. Refreshing is a potentially expensive operation, as all the package imports and exports have to be rewired for the bundles, which are refreshed. Therefore it makes sens IMHO to not refresh on a bundle update. Additionally, you might want to update multiple bundles and install and uninstall even more bundles before actually refreshing to the packages: to save time and probably and because there may new dependencies of updated bundles, which may only be met by updating other bundles. - I can't find where in the specification the semantics of "refresh" are
defined. It's mentionned a few times but it doesn't seem to have a devoted section.
As I said, package refresh is part of the Package Admin Service specification as the PackageAdmin.refreshPackages method. Also, why does a wire still exist after one of its ends has been
uninstalled ?
Uninstalled bundles remain in the system until the packages are refreshed or the system is re-started. Hope this helps. Regards Felix
_______________________________________________ OSGi Developer Mail List [email protected] http://www2.osgi.org/mailman/listinfo/osgi-dev
