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

Reply via email to