felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Jencks (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (FELIX-2923) Get a ServiceFactory.getService() resulted in a cycle message when registering a service inside a DS activation method
Date Mon, 14 Oct 2013 17:27:44 GMT

    [ https://issues.apache.org/jira/browse/FELIX-2923?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13794293#comment-13794293

David Jencks commented on FELIX-2923:

Can you try building DS from trunk and trying that?  There is some code that might help with
circular references there, although I have my doubts in this case.

Can you turn service B into an additional DS component?

Does service C need A and B right away or could it use binding methods taking a ServiceReference
and only fetch the actual services sometime later when needed?

Generally it's best if you don't try to register services yourself in  DS component, but use
more DS components instead.  Can you provide details on why B has to be registered in code?

> Get a ServiceFactory.getService()  resulted in a cycle message when registering a service
inside a DS activation method
> -----------------------------------------------------------------------------------------------------------------------
>                 Key: FELIX-2923
>                 URL: https://issues.apache.org/jira/browse/FELIX-2923
>             Project: Felix
>          Issue Type: Bug
>          Components: Declarative Services (SCR)
>    Affects Versions:  scr-1.6.0
>            Reporter: David Humeniuk
> I've run into an issue with Felix SCR where I get the message:
> ServiceFactory.getService() resulted in a cycle
> The reason this appers to be occuring is because within an activation method of a service
component, call it ServiceAImpl (which provides ServiceA), the component registers another
service, call it ServiceB.
> I have another service component, call it ServiceCImpl, which depends on both ServiceA
and ServiceB. When ServiceAImpl registers ServiceB, ServiceCImpl is attemted to be activated
within the call to activate ServiceAImpl.  As part of the activation, the ServiceCImpl binding
methods are called (at least attempted). When the binding method for ServiceA is attempted,
the cycle is detected and the component fails to initialize.
> I guess what doesn't make sense is why the SCR will activate ServiceCImpl within the
activation method of ServiceAImpl. I wouldn't think that ServiceCImpl would be considered
satisfied until after the activation method has exited. Perhaps this is an issue of using
declarative services while still registering services directly with the framework?

This message was sent by Atlassian JIRA

View raw message