On Mon, Feb 18, 2019 at 9:39 AM Thomas Driessen via osgi-dev < osgi-dev@mail.osgi.org> wrote:
> Hi Tim, > > as always thanks for your super detailed answer! > > Just two more questions on this topic: > > 1) Out of curiosity: do you know why the decision was made to make the > default for @Reference List<ITest> static, reluctant? For 0/1..1 this makes > sense to me, but for me an expected default behavior for 0/1..n references > would have been dynamic, greedy, so that I end up with some services > isntead of probably none. > The default is reluctant because "greedy" did not exist until DS 1.2. If the default had been made greedy at that time, components coded before DS 1.2 would have seen a substantial change in behaviour that could be considered non-backwards-compatible. Static has *always* been the default over dynamic, because dynamic forces the developer to understand thread safety and to code the component much more cautiously. Static is simple and safe. > > 2) The observed Exception for optional/dynamic/reluctant: Is it intended? > I tried to switch to bnd 4.2.0 to see if this exxception occurs there too, > but was unable to do so. When I change the version number of bnd to 4.2.0 > in the standard enRoute setup, then some of the bnd-plugins can not be > found by maven. > Probably not expected, this smells like a bug. > > Kind regards, > Thomas > > ------ Originalnachricht ------ > Von: "Tim Ward" <tim.w...@paremus.com> > An: "Thomas Driessen" <thomas.driessen...@gmail.com>; "OSGi Developer > Mail List" <osgi-dev@mail.osgi.org> > Cc: "Raymond Auge" <raymond.a...@liferay.com> > Gesendet: 18.02.2019 10:15:54 > Betreff: Re: [osgi-dev] Clarification on reference behavior regarding > field injection > > Hi Thomas, > > Just to clarify, the behaviour that you see with static reluctant services > will always look “odd” for cardinalities other than mandatory, and what > you’ve recorded is 100% correct behaviour. > > > - Static references force the component to be re-created if the value > of the reference changes > - Reluctant references avoid rebinding the service unless it is > required > > > Therefore: > > > - An optional reference bound to nothing will never bind to anything > again (unless the component is re-created for another reason) because > having zero references is valid and you are reluctant to re-create the > component instance > - An optional reference bound to a service will not change until that > service is unregistered (ignoring all new services), at which point it will > either: > - Pick up the highest ranked of any matching registered services > - Bind to nothing if no matching services are available > - A multiple reference bound to nothing will behave exactly like an > optional component > - A multiple reference bound to one or more services will not change > until any of the bound services are unregistered (ignoring all new > services), at which point it will either: > - Pick up all the available registered services > - Bind to nothing if no matching services are available > - An “at least one" reference bound to one or more services will not > change until any of the bound services are unregistered (ignoring all new > services), at which point it will either: > - Pick up all the available registered services > - Make the component unsatisfied > > > > The end result of this is that references that can accept zero will tend > to zero over time, and then tend to stay with zero bound references. At > least one references will tend to a small number of “stable” services with > new services ignored. > > In general references of these types should be dynamic or greedy (or both). > > Best Regards, > > Tim > > On 18 Feb 2019, at 09:38, Thomas Driessen via osgi-dev < > osgi-dev@mail.osgi.org> wrote: > > Oh Sorry :/ > > Those combinations with cardinalities optional/mandatory have been > assigned to ITest, those with multiple/at_least_one have been assigned to > List<ITest>. > > I didn't think it makes sense to assign them vice versa, e.g., ITest with > multiple or List<ITest> with mandatory? Or am I wrong? If so, in what case > would you use such a combination? > > Kind regards, > Thomas > > ------ Originalnachricht ------ > Von: "Raymond Auge" <raymond.a...@liferay.com> > An: "Thomas Driessen" <thomas.driessen...@gmail.com>; "OSGi Developer > Mail List" <osgi-dev@mail.osgi.org> > Gesendet: 16.02.2019 17:42:19 > Betreff: Re: [osgi-dev] Clarification on reference behavior regarding > field injection > > You're chart doesn't appear to list _which_ field (Reference) was > associated with any given line (collection vs. scalar). It makes a > difference. > > - Ray > > On Sat, Feb 16, 2019 at 9:15 AM Thomas Driessen via osgi-dev < > osgi-dev@mail.osgi.org> wrote: > >> Hi, >> >> I'm trying to get an overview over the effects of different combinations >> of cardinality, policy and policyOption within a @Reference annotation for >> a field. >> >> My Example looks like this: >> >> @Component >> public class MyComp{ >> @Reference(...) >> ITest myTest; >> >> @Reference(...) >> List<ITest> myTests; >> } >> >> and the observed behavior for this setup with different combinations of >> the above named properties is: >> <image.png> >> >> I'm especially interested in the yellow marked cases: Is this an intended >> behavior? >> >> Kind regards, >> Thomas >> _______________________________________________ >> OSGi Developer Mail List >> osgi-dev@mail.osgi.org >> https://mail.osgi.org/mailman/listinfo/osgi-dev > > > > -- > *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile> > (@rotty3000) > Senior Software Architect *Liferay, Inc.* <http://www.liferay.com/> > (@Liferay) > Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org/> > (@OSGiAlliance) > > _______________________________________________ > OSGi Developer Mail List > osgi-dev@mail.osgi.org > https://mail.osgi.org/mailman/listinfo/osgi-dev > > > _______________________________________________ > OSGi Developer Mail List > osgi-dev@mail.osgi.org > https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________ OSGi Developer Mail List osgi-dev@mail.osgi.org https://mail.osgi.org/mailman/listinfo/osgi-dev