[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [equinox-dev] Service Component circular dependencies

It sounds like a bug in DS. A component is considered fully activated 
immediately before activate() is called. So, if during the execution of 
A.activate() some one wants A, A should be returned since it is now 
activated. Please open a bug report with a reproduction scenario.

Is A declared as a servicefactory=true? This will result in a unique 
instance of A being created for each bundle which uses A.

BJ Hargrave
Senior Technical Staff Member, IBM
OSGi Fellow and CTO of the OSGi Alliance
Office: +1 407 849 9117 Mobile: +1 386 848 3788

Subbarao Meduri/Durham/IBM@IBMUS 
Sent by: equinox-dev-bounces@xxxxxxxxxxx
06/28/2006 12:46 PM
Please respond to
Equinox development mailing list <equinox-dev@xxxxxxxxxxx>

Equinox development mailing list <equinox-dev@xxxxxxxxxxx>

[equinox-dev] Service Component circular dependencies

It appears that the Declarative Services runtime can potentially 
instantiate a delayed service component multiple times.

In the scenario I have, a delayed service component A is called on 
activate() method after it is looked up in the service registry, and as 
part of processing the activate code, somewhere deep in the call stack, 
the service for component A is looked up again (using service registry 
APIs). This is clearly a mandatory circular dependency that DS does not 
support. I would have expected an exception thrown at this time indicating 
a potential circular dependency. Instead, it appears that the DS runtime 
tries to instantiate and activate the component again, which seems like a 

On the other hand, IOC frameworks such as Spring/Pico seem to have a way 
to deal with circular references. would it be possible that DS runtime to 
support mandatory circular references, and not have such restriction ?

Appreciate your thoughts.

equinox-dev mailing list