[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[equinox-dev] is this a service tracker bug?
|
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 1removedService <----- no add !
osgi> stop 2
osgi> start 2
osgi> refresh <- Only get add after refreshosgi> addingService
osgi>
On 25/01/2008, Neil Bartlett <njbartlett@xxxxxxxxx
> 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>
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
Attachment:
bundleA_1.0.0.jar
Description: application/vnd.osgi.bundle
Attachment:
bundleB_1.0.0.jar
Description: application/vnd.osgi.bundle
Attachment:
eclipe-projects.zip
Description: Zip archive