So, if the only things in the system are

osgi framework (felix)
fileinstall
some code bundle (spring bundle)
a bundle with an xml file only

And the xml-bundle imports packages that the spring-bundle exports, than
updating and refreshing the spring-bundle should cause the xml-bundle to be
"reloaded". However, if the xml-bundle does not contain code, why is it
important that it gets it's package dependencies rewired? It will not load
any classes anyway (and shouldn't have any package imports because it needs
no packages)? I must be missing something of your problem. :)

If the xml-bundle however does contain code (and needs to load classes), are
you sure that the only one exporting the packages of those classes is the
spring-bundle. One possiblity is that you have other bundles in the system
that export the same packages and that you're getting wired to those
packages instead.

"It didn't pick up the new version of the classes until I deleted the Spring
file[...]"
1. What is "it"? Which bundle are you expecting to see the changes from? If
it's the xml-bundle, have you confirmed that it's manifest.mf-file states
that it needs at least one package that ONLY the spring-bundle can give.
2. There is no way to unload classes, so if "it" has already loaded the
classes it is using, it doesn't matter that you update the origin of those
classes. You also need a refresh which will rewire the package dependencies,
restart the dependent bundles, and reload the classes.
3. Have you made sure that the framework actually gets an update request on
the spring bundle? Fileinstall only has the info supplied by the OS
(file-size, file creation date and so on) to go on, and might determine that
spring-bundleA and spring-bundleB are the same thing (no change, no update).

Finally, trying this in gogo shell might help you see what is wired to what
and when updates actually happen!

Regards,
Per-Erik Svensson


On Tue, Aug 16, 2011 at 7:08 AM, Jim Talbut <[email protected]> wrote:

> I've tried using refresh now (sorry it takes so long to get things done
> around here) and it made no difference.
> It didn't pick up the new version of the classes until I deleted the Spring
> file, waited for fileinstall to pick that up and remove the bundle, copied
> the file over again and waited for fileinstall to pick that up.
> Note that this is using a 1.0-SNAPSHOT version of the classes so there is
> no version number change, if that affects things.
>
> Jim
>
> -----Original Message-----
> From: Jim Talbut [mailto:[email protected]]
> Sent: 12 August 2011 17:32
> To: [email protected]
> Subject: RE: Help understanding OSGi class loading
>
> No I didn't.
> How does that work with existing instantiated objects?
>
> Thanks
>
> Jim
>
> -----Original Message-----
> From: Richard S. Hall [mailto:[email protected]]
> Sent: 12 August 2011 14:44
> To: [email protected]
> Subject: Re: Help understanding OSGi class loading
>
> Did you refresh after doing the update?
>
> On 8/12/11 4:03 AM, Jim Talbut wrote:
> > Hi,
> >
> > I've just been surprised by the behaviour of karaf/felix and I'd be
> grateful for some help understanding how this works.
> >
> > My code is split into two chunks:
> >
> > 1.       A compiled bundle.
> >
> > 2.       A Spring XML file.
> > My intention is that the Spring file contains all the configuration
> relating to the piece of work, whilst the bundle contains the (more static)
> compiled code - with the intention of being able to update/replace the
> Spring file whenever I want.
> >
> > I just found an error in the bundle and uninstalled it, but the bundle
> created for the Spring file is still running.
> >
> > Does this mean that only OSGi services are dynamically removed, and if
> the Spring file directly references exported classes from a bundle then the
> classes are only resolved via OSGi when they are loaded?
> > In which case will restarting the Spring bundle clear it out adequately
> to ensure that it picks up a new compiled bundle?
> >
> > Thanks
> >
> > Jim
> >
> >
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to