[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [equinox-dev] Regarding Lazy Activation

Hello,

Hi Neil could u please elaborate... it will be really helpful for beginner like me..

Hi Simon Archer... :-)  Thanks for the link .... I will look into it...

Regards
Ajinkya

On Wed, Feb 16, 2011 at 3:48 PM, Neil Bartlett <njbartlett@xxxxxxxxx> wrote:
Answer inline below...

On Wed, Feb 16, 2011 at 2:36 PM, ajinkya prabhune
<ajinkya.prabhune@xxxxxxxxx> wrote:
> Hello,
>
> Super help from both of u. I am now gng through the articles and seeing how
> it works...
>
> Yes I am trying to use a Service declared in A bundle --- to use in B
> bundle...
>
> Can I make the A Bundle As Lazy so that when B bundle ask for service in A
> ... the A bundles gets Active and Registers the Service
> will this work ?

No, this is not what "lazy activation" in OSGi is for. It has nothing
to do with services.

Declarative Services provides the right kind of laziness. If you
define a component in B that has a mandatory reference (i.e.
cardinality 1..1 or 1..n) to the service published from A, then it
will only create the component when the service becomes available,
which would be after A is activated.

In most cases the "lazy activation policy" is not required and is IMHO
an annoying distraction. All you really need is the following:

1) Create a DS component and declare it with a component.xml file
2) Do NOT create a BundleActivator... you don't need it when using DS.
3) Start both bundles A and B, in any order.

Cheers,
Neil

>
> Thanks for ur quick reply...
>
> On Wed, Feb 16, 2011 at 3:32 PM, Neil Bartlett <njbartlett@xxxxxxxxx> wrote:
>>
>> Ajinka,
>>
>> Do not do this. It is a common newbie mistake: there should be no
>> start-ordering dependency between bundles.
>>
>> You do not state *why* you want B to start after A has started. I
>> assume that you want to publish a service from A and consume it from
>> B? The correct way to do this is have B *listen* for the availability
>> of the service it needs to use, then A and B can be started in any
>> order.
>>
>> As Petar points out, using Declarative Services (DS) is a much easier
>> way to implement services, since it takes care of all the aspects of
>> listening for availability etc. I strongly recommend that you use DS
>> instead of coding against the low-level OSGi services APIs.
>>
>> Regards,
>> Neil
>>
>>
>>
>> On Wed, Feb 16, 2011 at 1:36 PM, ajinkya prabhune
>> <ajinkya.prabhune@xxxxxxxxx> wrote:
>> > Hello,
>> >
>> > I am quite new to the concept of OSGi and bundles.
>> > I have this issue.
>> > For eg - I have 2 bundles
>> > Bundle A and Bundle B,  Bundle A depends on Bundle B
>> > But I want to start Bundle B only when Bundle A is started...
>> > what are the ways to do it ? I manually found out the Bundle B using the
>> > Bundle object and started the Bundle B with bundle.start() but I
>> > would like to do it without the Java Code. can the Framework Help me.
>> >
>> >
>> > I am not sure but how does Bundle ActivationPolicy lazy works ?
>> >
>> >
>> >
>> > Thank u and regards
>> >
>> > --
>> > Thank you and Regards
>> > Ajinkya Prabhune
>> >
>> >
>> > _______________________________________________
>> > equinox-dev mailing list
>> > equinox-dev@xxxxxxxxxxx
>> > https://dev.eclipse.org/mailman/listinfo/equinox-dev
>> >
>> >
>> _______________________________________________
>> equinox-dev mailing list
>> equinox-dev@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/equinox-dev
>
>
>
> --
> Thank you and Regards
> Ajinkya Prabhune
>
>
> _______________________________________________
> equinox-dev mailing list
> equinox-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/equinox-dev
>
>
_______________________________________________
equinox-dev mailing list
equinox-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/equinox-dev



--
Thank you and Regards
Ajinkya Prabhune