I certainly intended the behavior when I implemented it. I don’t remember the 
details but I think there is a problem receiving multiple service events for 
the same service for different references in the same bundle so I was forced 
into it.

I think your use of service listener hooks is peculiar and is mixing logical 
levels. Even if you can get it to work I’d advise looking at your problem from 
a different angle to find a different solution.

David Jencks 

Sent from my iPhone

> On Jul 13, 2019, at 12:51 PM, Arnoud Glimmerveen <[email protected]> 
> wrote:
> 
> Hi all,
> 
> I am experimenting with OSGi Framework’ s Service ListenerHook to detect the 
> need for a particular service and based on that need register a service that 
> matches that need. An important aspect for my ListenerHook implementation is 
> the ability to extract properties from the service need, that are then used 
> to initialise a matching service. I’ll try to explain using an example:
> 
> In my ListenerHook I expect to be notified of a service need as follows:
> (&(objectClass=ServiceClass)(some.property=5))
> 
> Which would allow the ListenerHook to register a service with that property, 
> thus providing a match of the requested service.
> 
> This appears to work fine when the ‘requesting code’ is either using standard 
> ServiceTracker or Felix’ DependencyManager. However when I have Declarative 
> Services based code requesting the service as follows:
> 
> @Reference(target = “(some.property=5)”)
> ServiceClass service;
> 
> The ListenerHook is unable to construct a matching service, as it only sees a 
> service need for:
> 
> (objectClass=ServiceClass)
> 
> And the additional criterion from the target filter is not visible to the 
> ListenerHook. 
> 
> I did some debugging and found that Felix SCR 2.1.16 registers a 
> ServiceListener only for the className of a reference it needs to track. The 
> target filter of the reference (if present) is matched within that 
> ServiceListener and matches are tracked from then on. This behaviour 
> unfortunately prevents my ListenerHook to see the ‘complete picture’ of what 
> is needed and is not able to register a matching service.
> 
> My question is: is the behaviour of SCR that I observed correct and desired, 
> or have I stumbled on an issue in SCR?
> 
> Any thoughts and/or insights are greatly appreciated!
> 
> Best regards,
> 
> Arnoud Glimmerveen

Reply via email to