Thanks. So that's expected behaviour - and all makes sense.
Regards Mark On 25/01/2008, Jeremy Volkman <[EMAIL PROTECTED]> wrote: > > Mark, > > Since your service interface (IA.java) is contained within bundleA, > bundleB requires a package import from bundleA. The effect that > you're seeing is that the old version of bundleA remains in the system > and is still used by bundleB after you call "update". Therefore you > now have two instances of bundleA in the system: the old one, still > used by bundleB, and the new refreshed one. > > Since you called 'refresh', the old bundleA was stopped, and so were > any registered services (which is why you see 'removedService'). The > new bundleA was also started, and a new IA service was registered. > However, since bundleB is still using the package import from the old > bundleA, it does not get notified of the new bundleA's service (refer > to ServiceListener vs. AllServiceListener). > > Calling 'refresh' instructs the framework to perform the steps > outlined at > http://www2.osgi.org/javadoc/r4/org/osgi/service/packageadmin/PackageAdmin.html#refreshPackages(org.osgi.framework.Bundle[]) > . > This in turn stops bundleB, gets rid of the old bundleA and links > bundleB to the new bundleA's package source. When bundleB is > restarted and linked to the new bundleA, it can once again see the IA > service. > > Sorry if that was a bit confusing.. maybe someone else can clarify a bit > more. > > -Jeremy > > On Jan 25, 2008 11:33 AM, Mark <[EMAIL PROTECTED]> wrote: > > > > This is driving me mad. I have two bundles A and B. B track the service > > offered by A. > > > > However if I call update on A then I get a remove Service notification > but > > no add Service notification - that is until I issue a refresh command ? > is > > this a bug? > > > > I have written the same simple code 10 time .. see the results. > > > > I have attached the two bundles and the two eclipse plugin projects (as > one > > zip) - just in case a Eclipse/OSGi guru like yourself can figure it out? > > > > ======================================== > > > > C:\eg>java -jar equinox.osgi.jar -console > > > > osgi> ss > > > > Framework is launched. > > > > id State Bundle > > 0 ACTIVE org.eclipse.osgi_3.4.0.v20071207 > > > > osgi> install file:bundleA_1.0.0.jar > > Bundle id is 1 > > > > osgi> install file:bundleB_1.0.0.jar > > Bundle id is 2 > > > > osgi> ss > > > > Framework is launched. > > > > id State Bundle > > 0 ACTIVE org.eclipse.osgi_3.4.0.v20071207 > > 1 INSTALLED bundleA_1.0.0 > > 2 INSTALLED bundleB_1.0.0 > > > > osgi> start 1 > > > > osgi> start 2 > > addingService > > > > osgi> stop 1 > > removedService > > > > osgi> start 1 > > addingService > > > > osgi> update 1 > > removedService <----- no add ! > > > > osgi> stop 2 > > > > osgi> start 2 > > > > osgi> refresh <- Only get add after refresh > > > > osgi> addingService > > > > > > osgi> > > > > > > > > On 25/01/2008, Neil Bartlett <[EMAIL PROTECTED] > wrote: > > > > > > > > > Hi Mark, > > > > > > > > > Many thanks for your kind words! > > > > > > > > > Regarding the service tracker problem... that's not the behaviour I > would > > expect to see, and I've just put together a small test case which prints > a > > message in the addingService, removedService and modifiedService methods > of > > the ServiceTracker. When I update the bundle that registered the > service, I > > see the following: > > > > > > > > > osgi> update 5 > > > Removed service > > > Added service > > > > > > osgi> > > > > > > > > > > > > Which seems to be the way it should work. I suggest posting a message > to > > the equinox-dev mailing list ( > > https://dev.eclipse.org/mailman/listinfo/equinox-dev) explaining the > problem > > in detail and including a minimal code sample that reproduces the > problem. > > > > > > > > > Regards, > > > Neil > > > > > > > > > > > > > > > > > > > > > > > > On 25 Jan 2008, at 13:42, Mark wrote: > > > > > > Neil, > > > > > > First off I have to thank you in a big way, because it was you > articles > > that got me up and running on OSGI. > > > > > > I am also glad that you are putting together a book... because I was > > thinking about it myself...in practice or in action!, would you like > some > > help? > > > > > > ..Anyway the reason for this mail... > > > > > > I was looking at the Listeners Considered Harmful: The "Whiteboard" > > Pattern white paper, and I put together a very simple two bundle example > (on > > Equinox), > > > > > > Bundle A (offers a service) > > > Bundle B (consumes service A, using a Service Tracker) > > > > > > So far so good, and not exactly rocket science. > > > > > > However this morning I discovered that if you update A - then you must > > refresh A in order for B to receive the added service event. > > > > > > This came as a surprise, go I Googled a while, and came up short. So I > was > > wondering if you had some words of widom for me on this ? > > > > > > Kind Regards > > > > > > Mark > > > > > > > > > > > > > > _______________________________________________ > > equinox-dev mailing list > > equinox-dev@eclipse.org > > https://dev.eclipse.org/mailman/listinfo/equinox-dev > > > > > _______________________________________________ > equinox-dev mailing list > equinox-dev@eclipse.org > https://dev.eclipse.org/mailman/listinfo/equinox-dev >
_______________________________________________ equinox-dev mailing list equinox-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/equinox-dev