[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[equinox-dev] policy="dynamic" in Declarative Services.

Hi devs,

Even though I have used the value "dynamic" for the "policy" attribute in the "reference" element, the component is deactivated once the bound service is unregistered. Here is the component.xml I am using.

<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
    <scr:component enabled="true" name="carbon.core.dscomponent">
        <implementation class="org.wso2.carbon.core.internal.CarbonCoreDSComponent"/>
        <property name="service.pid" value="carbon.core.dscomponent"/>
        <reference name="registry.service" interface="org.wso2.carbon.registry.core.service.RegistryService" cardinality="1..1" policy="dynamic" bind="setRegistryService" unbind="unsetRegistryService"/>
    </scr:component>
</components>

Here is the component implementation class.

public class CarbonCoreDSComponent{

    private static Log log = LogFactory.getLog(CarbonCoreDSComponent.class);
    private BundleContext bundleContext;

    protected void activate(ComponentContext ctxt) {
        log.info("******* Carbon Core bundle is activated ******* ");
    }

    protected void deactivate(ComponentContext ctxt) {
        log.info("******* Carbon Core bundle is deactivated ******* ");
    }

    protected void setRegistryService(RegistryService registryService) {
        System.out.println("--------------------Set Registry Service");
    }

    protected void unsetRegistryService(RegistryService registryService) {
        System.out.println("--------------------Unset Registry Service");       
    }
}

When I stop the bundle which registers the "org.wso2.carbon.registry.core.service.RegistryService", following out put is generated.

******* Carbon Core bundle is deactivated *******  {org.wso2.carbon.core.internal.CarbonCoreDSComponent}
--------------------Unset Registry Service

This mean carbon.core bundle is deactivated right?

Expected behavior: When the RegisterService is unregisterd, only the unbind method should be called. But here first the bundle is deactivated and then the unbind method is called.

Any solution would be greatly appreciated.

Thanks
--
Sameera Jayasoma
WSO2 Inc.
Oxygenating the Web Service Platform.
http://wso2.org/

blog: http://tech.jayasoma.org