I 'solved' it by restarting the device. I rather don't, as I like solution where I can upgrade functionality without shutting down.

Basically my structure is as follows:
Bundle A: API
Bundle S: Service (uses and provides some API implementation from A)
Bundle X1..N: Provide functionality for S using the extender pattern, use and provide some API implementation from A) I updated A and S. For the X bundles the API change wasn't important, but for S it was. Somehow S still picked up old-A, while I had uninstalled old-A (and old-S). I have updated my tooling from 'THE OSGi plugin' from Gradle to use 'the bnd OSGi plugin'. I noticed that the old plugin would automatically add A's package as Export-Bundle, while with bnd's plugin I had to do that myself. Maybe that caused the problem.

Maurice.

Citeren Neil Bartlett <njbartl...@gmail.com>:

On 4 Nov 2015, at 11:07, Robert Onslow <robert.ons...@gmail.com> wrote:

Delete the directory called felix-cache??

No, in his second email he says that other bundles are still running that use the old API. So we’re talking about a series of changes made in a running OSGi Framework, and it wouldn’t be a good idea to delete the storage directory underneath a running framework.

These changes *should* work. Best guess is that the implementation bundle ships its own copy of the API bundle.

As a general rule, you should do a refresh after a series of changes to bundle states (installs, uninstalls or updates). You can do this simply with the “refresh” command in the Gogo shell. In this scenario, a refresh would cause all the bundles that import from the API bundle to stop and revert to INSTALLED state.

Regards,
Neil



---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
For additional commands, e-mail: users-h...@felix.apache.org

Reply via email to