Thanks guys for your feedback. I really understands the problem here now.

Thanks
Sameera

On Mon, May 4, 2009 at 8:28 PM, Hal Hildebrand <[email protected]>wrote:

> Yes, I see the point.  He wants the service to become available before the
> dependency arrives.
> Sry for the confusion.
>
> On May 4, 2009, at 7:55 AM, Toedter, Kai wrote:
>
> @Hal, but DM will always create the service component eagerly since it does
> not support lazy instantiation, right?
>
> Kai
>
> *From:* [email protected] [
> mailto:[email protected] <[email protected]>]
> *On Behalf Of *Hal Hildebrand
> *Sent:* Montag, 4. Mai 2009 16:53
> *To:* Equinox development mailing list
> *Subject:* Re: [equinox-dev] policy="dynamic" in Declarative Services.
>
> Well, Spring/DM will still work.  The issue will be when he tries to
> actually send a message to the service, in which case it will throw a
> runtime exception.
>
> On May 4, 2009, at 7:31 AM, BJ Hargrave wrote:
>
>
> This does not sound like a "flicker" problem. DS can handle that also for a
> dynamic 1..1 reference. The new service would be passed to bind before the
> old service is passed to unbind. So the component is never without a
> dependent service.
>
> I think the issue here is that there is no replacement service available
> and, with a 1..1 cardinality, the component is deactivated.
> --
> *BJ Hargrave*
> Senior Technical Staff Member, IBM
> OSGi Fellow and CTO of the OSGi Alliance <http://www.osgi.org/>*
> *[email protected]
>
> office: +1 386 848 1781
> mobile: +1 386 848 3788
>
>
>
> From:
> Hal Hildebrand <[email protected]>
> To:
> Equinox development mailing list <[email protected]>
> Date:
> 2009/05/04 10:24
> Subject:
> Re: [equinox-dev] policy="dynamic" in Declarative Services.
> Sent by:
> [email protected]
>
>
> ------------------------------
>
>
>
> There's also Spring/DM, which does I think what you want - i.e. 1..1
> cardinality, but not dropping the service is its dependencies
> momentarily flicker.
>
> On May 4, 2009, at 6:53 AM, Neil Bartlett wrote:
>
> > You cannot directly do this, because mandatory reference is mandatory
> > at all times. However, you could make the reference optional and
> > perform some kind of internal activation/deactivation in the
> > bind/unbind methods.
> >
> > However, if that still doesn't work for you then you're trying to do
> > something outside the scope of use-cases supported by DS, so you
> > should drop down to the ServiceTracker API.
> >
> > Regards,
> > Neil
> >
> >
> > On Mon, May 4, 2009 at 2:26 PM, Sameera Jayasoma
> > <[email protected]> wrote:
> >> Hi  Kai,
> >>
> >> On Mon, May 4, 2009 at 11:55 AM, Toedter, Kai <[email protected]
> >> >
> >> wrote:
> >>>
> >>> HI Sameera,
> >>>
> >>>
> >>>
> >>> I think Equinox’ behavior is correct here. If you have a mandatory
> >>> service
> >>> reference that is not valid anymore, the referring component has
> >>> to be
> >>> deactivated even if the policy is dynamic.
> >>
> >> I agree with your point.  Now say that the service is mandatory
> >> when the
> >> component is activated. Once the component is activated, the
> >> service is a
> >> optional one. That mean I don't want my component to be de-
> >> activated when
> >> the service is unregistered. How can I handle this situation with
> >> declarative services?
> >>
> >> Thanks
> >> Sameera
> >>>
> >>>
> >>>
> >>>> But my requirement is that the service should be registered
> >>>> before the
> >>>> component is activated.
> >>>
> >>>> in that case I have to put cardinality as "1..1" right?
> >>>
> >>> I guess your question is related to the lazy activation of
> >>> components.
> >>> This is the default unless you declare the component itself
> >>> “immediate”. The
> >>> meaning is: Unless no one wants to use your service, the component
> >>> (the
> >>> implementing Java class) will not be instantiated.
> >>>
> >>>
> >>>
> >>> Best regards,
> >>>
> >>>
> >>>
> >>> Kai
> >>>
> >>>
> >>>
> >>> From: [email protected]
> >>> [mailto:[email protected]<[email protected]>]
> On Behalf Of Sameera
> >>> Jayasoma
> >>> Sent: Montag, 4. Mai 2009 04:59
> >>> To: Equinox development mailing list
> >>> Subject: Re: [equinox-dev] policy="dynamic" in Declarative Services.
> >>>
> >>>
> >>>
> >>> Hi,
> >>>
> >>> On Mon, May 4, 2009 at 8:23 AM, BlueDavy Lin <[email protected]>
> >>> wrote:
> >>>
> >>> if u want to the component isn't deactivated,u should set the bound
> >>> service cardinality to "0..1"
> >>>
> >>>
> >>> Thanks for the quick reply. But my requirement is that the service
> >>> should
> >>> be registered before the component is activated. in that case I
> >>> have to put
> >>> cardinality as "1..1" right?
> >>>
> >>> Thanks
> >>> Sameera
> >>>
> >>> 2009/5/4 Sameera Jayasoma <[email protected]>:
> >>>
> >>>> 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
> >>>>
> >>>
> >>>> _______________________________________________
> >>>> equinox-dev mailing list
> >>>> [email protected]
> >>>> https://dev.eclipse.org/mailman/listinfo/equinox-dev
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>> --
> >>> =============================
> >>> |     BlueDavy                                      |
> >>> |     OSGi China User Group Director    |
> >>> |     http://china.osgiusers.org               |
> >>> |     http://blog.bluedavy.cn                   |
> >>> =============================
> >>> _______________________________________________
> >>> equinox-dev mailing list
> >>> [email protected]
> >>> https://dev.eclipse.org/mailman/listinfo/equinox-dev
> >>>
> >>>
> >>> --
> >>> Sameera Jayasoma
> >>> Software Engineer
> >>> WSO2 Inc.
> >>> Oxygenating the Web Service Platform.
> >>> http://wso2.org/
> >>>
> >>> blog: http://tech.jayasoma.org
> >>>
> >>> _______________________________________________
> >>> equinox-dev mailing list
> >>> [email protected]
> >>> https://dev.eclipse.org/mailman/listinfo/equinox-dev
> >>>
> >>
> >>
> >>
> >> --
> >> Sameera Jayasoma
> >> Software Engineer
> >> WSO2 Inc.
> >> Oxygenating the Web Service Platform.
> >> http://wso2.org/
> >>
> >> blog: http://tech.jayasoma.org
> >>
> >> _______________________________________________
> >> equinox-dev mailing list
> >> [email protected]
> >> https://dev.eclipse.org/mailman/listinfo/equinox-dev
> >>
> >>
> > _______________________________________________
> > equinox-dev mailing list
> > [email protected]
> > https://dev.eclipse.org/mailman/listinfo/equinox-dev
>
> _______________________________________________
> equinox-dev mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/equinox-dev
>
> _______________________________________________
> equinox-dev mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/equinox-dev
>
> _______________________________________________
> equinox-dev mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/equinox-dev
>
>
>
> _______________________________________________
> equinox-dev mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/equinox-dev
>
>


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

blog: http://tech.jayasoma.org
_______________________________________________
equinox-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/equinox-dev

Reply via email to