Hi,

On 25.05.2009, at 08:10, Stuart McCulloch wrote:

2009/5/25 João Ferreira <[email protected]>

Hi

I think i found a bug with service rankings since the comparator method
of service reference isn't being called. I placed a breakpoint in the
method and got no stop.


you'll need to provide more details like which version of Felix you're using
and
where you're setting the breakpoint (in trunk the ServiceReference.compareTo
implementation is actually in ServiceRegistrationImpl.java:452)

also it depends how you're getting the service - if you use the bundle
context
method "getServiceReference(String clazz)" this definitely uses compareTo - see the "getBestServiceReference" utility method in BundleContextImpl:271

but if you're using a high-level framework like iPOJO then it might be using
its
own implementation of the ranking algorithm to sort services (the compareTo method in ServiceReference only appeared in r4.1 of the OSGi spec, before that the service ordering was defined in the spec but there was no compareTo
method defined in the ServiceReference interface)

Could you try an iPOJO trick: set the binding policy of your 'requires' to 'dynamic-priority'. So, in XML add 'policy="dynamic-priority"', in annotations add: policy="dynamic-priority".

If it works like this, it's a bug in the 'dynamic' binding policy :-)

Regards,

Clement




Could someone confirm this? I'm creating the services with ipojo but i
dont think thats the prob since the services have the service.ranking
property set.

Thanks
João Ferreira




--
Cheers, Stuart

Reply via email to