[ 
https://issues.apache.org/jira/browse/FELIX-1754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Matthew Sykes updated FELIX-1754:
---------------------------------

    Attachment: felix-1754.diff

Simple patch to have the DependencyManager use getAllServiceReferences instead 
of getServiceReferences.  This addressed the component activation problem.


> Usage of BundleContext.getServiceReferences results in failure to activate 
> components
> -------------------------------------------------------------------------------------
>
>                 Key: FELIX-1754
>                 URL: https://issues.apache.org/jira/browse/FELIX-1754
>             Project: Felix
>          Issue Type: Bug
>          Components: Declarative Services (SCR)
>    Affects Versions: scr-1.2.0
>            Reporter: Matthew Sykes
>         Attachments: felix-1754.diff
>
>
> I'm attempting to move some code from Equinox to Felix that makes use of the 
> declarative services 1.1 runtime.  Many of the components in our bundles 
> declare multiple 'provide' elements in the service declaration .  In general 
> these services consist of a standardized interface in one package and 
> extensions to that interface in another.  Depending on the requirements of 
> the code using the component, other bundles will declare their components 
> with references to either the standardized interface or the extended 
> interface.
> The issue I'm seeing is that the Felix SCR fails to activate some components 
> because it's failing to resolve references to the service provided by another 
> component.  It turns out that the SCR is using 
> BundleContext.getServiceReferences instead of 
> BundleContext.getAllServiceReferences to locate candidate services when 
> resolving references.  Unfortunately, the getServiceReference flavor requires 
> that the using bundle have access to all class names under which the target 
> service was registered - not just the interface associated with the reference.
> Given the use-case I've described and the behavior of Equinox, I believe the 
> Felix SCR should be using BundleContext.getAllServiceReferences(..) to 
> resolve references and rely on the bundle creator to define the correct 
> imports.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to