Hi Felix,

thx for your answer. I completely forgot to tell that I'm using Apache Felix of 
course. 

I tried my FindHook with the more general way by calling 
BundleContext.getServiceReference and there it works. So as you told that must 
be an issue of the framework.

Greetings.
Christian

----- Original Message -----
From: [email protected]
To: [email protected]
Date: 02.08.2012 16:01:56
Subject: Re: DS and FindHook


> Hi,
> 
> Am 02.08.2012 um 14:32 schrieb <[email protected]>:
> 
>> Hi,
>> 
>> Today I worked a little bit with OSGi Hooks, specially with FindHook and 
>> EventListenerHook for services. I wanted to try out proxying services. The 
>> EventListenerHook works fine and my services are proxied. But I realized 
>> that the FindHook event would'nt be called if a service will get a reference 
>> of the service implementation by annotating the related setXXX method with 
>> @Reference (Bnd style). Maybe it is not a problem with the annotation, but 
>> with DS in general.
>> 
>> This is quite bad, bc there are two services registered one without proxy 
>> and one proxied. I only want to get references from the proxied one. In 
>> general, without DS, you can get references by calling 
>> BundleContext.getServiceReference(java.lang.Class<S> clazz) and the event 
>> FindHook.find will be called, where you can decide which ServiceReference 
>> you want to return.
>> 
>> What kind of processes will be executed when I'm using DS like approaches 
>> (for me: Bnd annotation @Reference)? As I described in the above section: I 
>> want to decide which services should be referenced.
> 
> I can only speak for the Apache Felix DS implementation: I use the 
> BundleContext.getServiceReferences(String, String) to explicitly access 
> service references using the BundleContext of the respective context (thus to 
> also have OSGi security applied). I would assume that candidate service 
> references are send to the FilterHook before getting the result to the DS 
> implementation.
> 
> So, unless there is a bug in the framework implementation or in your hook 
> registration, your hook should really be called. (and of course only if the 
> getServiceReferences call comes after your hook is registered.
> 
> Regards
> Felix
> 
>> 
>> Greetings.
>> Christian
>> 
>> 
>> ---------------------------------------------------------------------
>> 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