@Romain maybe I'm slow today (i am on vacation :-)) do u mind explain with
an example?
On Feb 28, 2015 5:44 PM, "Romain Manni-Bucau" <[email protected]> wrote:

> It call release on the instance creational context and each instance has a
> child creational context of the parent. Said otherwise it is as if the bean
> as a scope handled manually
> Le 28 févr. 2015 17:32, "Lars-Fredrik Smedberg" <[email protected]> a
> écrit :
>
>> @Romain
>>
>> Can explain to me what difference it will make (what the fix does)
>> On Feb 28, 2015 3:49 PM, "Romain Manni-Bucau" <[email protected]>
>> wrote:
>>
>>> PS: to be complete CDI 1.x, x > 0 added destroy(X) in Instance API to
>>> fix it
>>>
>>>
>>> Romain Manni-Bucau
>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>> <http://rmannibucau.wordpress.com> | Github
>>> <https://github.com/rmannibucau> | LinkedIn
>>> <https://www.linkedin.com/in/rmannibucau> | Tomitriber
>>> <http://www.tomitribe.com>
>>>
>>> 2015-02-28 11:20 GMT+01:00 Karl Kildén <[email protected]>:
>>>
>>>> Got it, thanks all!
>>>>
>>>> On 27 February 2015 at 19:54, John D. Ament <[email protected]>
>>>> wrote:
>>>>
>>>>> It's a good approach, I do something similar at times.  However, you
>>>>> need to make sure the beans have scopes to avoid this memory leak.
>>>>>
>>>>>
>>>>> On Fri, Feb 27, 2015 at 1:47 PM Karl Kildén <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Hrmm not sure what you mean. This is not a framework it is business
>>>>>> logic and I really like to put validators in a list like this instead of 
>>>>>> if
>>>>>> else if else if else if
>>>>>>
>>>>>> On 27 February 2015 at 19:37, Romain Manni-Bucau <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Mark will surely say you that configuring anyThingCriterion will
>>>>>>> make your iterable size (if i can say it) = 1 even if you have 100
>>>>>>> criterions ;)
>>>>>>>
>>>>>>> this is not a real spi
>>>>>>>
>>>>>>>
>>>>>>> Romain Manni-Bucau
>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>>>> <http://rmannibucau.wordpress.com> | Github
>>>>>>> <https://github.com/rmannibucau> | LinkedIn
>>>>>>> <https://www.linkedin.com/in/rmannibucau>
>>>>>>>
>>>>>>> 2015-02-27 19:34 GMT+01:00 Karl Kildén <[email protected]>:
>>>>>>>
>>>>>>>> Hi John!
>>>>>>>>
>>>>>>>> Summary: we use it as iterable
>>>>>>>>
>>>>>>>> Long story for completeness:
>>>>>>>>
>>>>>>>> Basically we get a thing from our business partner (inputThing) and
>>>>>>>> map it to our representation of thing (ProcessedThing)
>>>>>>>>
>>>>>>>> Each ThingCriterion can veto the processedThing and then they used
>>>>>>>> inputThing to print a pretty error message. When the Thing is enhanced
>>>>>>>> (happens all the time) we implement new ThingCriterion  and they get 
>>>>>>>> picked
>>>>>>>> up automatically...
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>     @Inject
>>>>>>>>     private Instance<ThingCriterion> thingCriteria;
>>>>>>>>
>>>>>>>>
>>>>>>>>     public List<ValidationProblem> validateList(final
>>>>>>>> ProcessedThing thing, final InputThing inputThing) {
>>>>>>>>         List<ValidationProblem> results = new ArrayList<>();
>>>>>>>>         for (final ThingCriterion criterion : thingCriteria) {
>>>>>>>>             results.addAll(criterion.validate(thing, inputThing));
>>>>>>>>         }
>>>>>>>>         return results;
>>>>>>>>     }
>>>>>>>>
>>>>>>>>
>>>>>>>> Romain,
>>>>>>>>
>>>>>>>> Thanks for your help. Great suggestion will it have better perf
>>>>>>>> then just putting @ApplicationScoped on my ThingCriterion beans? 
>>>>>>>> Probably
>>>>>>>> not important just curious.
>>>>>>>>
>>>>>>>> cheers
>>>>>>>>
>>>>>>>> On 27 February 2015 at 19:25, Romain Manni-Bucau <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> When I used this pattern I always did (for perf reason but side
>>>>>>>>> effect is  behavior is what you want):
>>>>>>>>>
>>>>>>>>> @PostConstruct
>>>>>>>>> private void resolve() {
>>>>>>>>>    value = instance......get();
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> then in the code don't use instance at all but value.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Romain Manni-Bucau
>>>>>>>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>>>>>>>> <http://rmannibucau.wordpress.com> | Github
>>>>>>>>> <https://github.com/rmannibucau> | LinkedIn
>>>>>>>>> <https://www.linkedin.com/in/rmannibucau>
>>>>>>>>>
>>>>>>>>> 2015-02-27 19:15 GMT+01:00 John D. Ament <[email protected]>:
>>>>>>>>>
>>>>>>>>>> Are you calling get() on the Instance with each request (or
>>>>>>>>>> whatever0 that comes into this bean?
>>>>>>>>>>
>>>>>>>>>> On Fri, Feb 27, 2015 at 1:13 PM Karl Kildén <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> To explain myself further ALL I had on my heap was my
>>>>>>>>>>> Instance<MyInterface>... and gc released 0.5% memory :)
>>>>>>>>>>>
>>>>>>>>>>> I had 200 000 of them at least. They where supposed to be four
>>>>>>>>>>> singletons. My idea was inject into @ApplicationScoped and omit to 
>>>>>>>>>>> give
>>>>>>>>>>> them scope because they will be @ApplicationScoped anyways... Seems 
>>>>>>>>>>> every
>>>>>>>>>>> invocation of my @ApplicationScoped bean recreated all instances.
>>>>>>>>>>>
>>>>>>>>>>> What I had was unrecoverable mem leak. Now I could be doing
>>>>>>>>>>> something stupid or Instance<MyInterface> has a problem or 
>>>>>>>>>>> something else...
>>>>>>>>>>>
>>>>>>>>>>> Cheers
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 27 February 2015 at 19:05, Romain Manni-Bucau <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> If dependent it will be kept in enclosing bean.
>>>>>>>>>>>>  Le 27 févr. 2015 19:00, "Lars-Fredrik Smedberg" <
>>>>>>>>>>>> [email protected]> a écrit :
>>>>>>>>>>>>
>>>>>>>>>>>> So does this mean that there will be a memory leak in the case
>>>>>>>>>>>>> Karl described?
>>>>>>>>>>>>>
>>>>>>>>>>>>> I have used similar constructs before so im curios (@Inject
>>>>>>>>>>>>> @Provider <some dep scoped bean> in an @ApplicationScoped bean 
>>>>>>>>>>>>> and called
>>>>>>>>>>>>> get () on the injected provider).
>>>>>>>>>>>>>
>>>>>>>>>>>>> I thought for a while that it might get garbage collected when
>>>>>>>>>>>>> the created bean is outof scope or maybe then there is no way for
>>>>>>>>>>>>> @PreDestroy to be called?
>>>>>>>>>>>>>
>>>>>>>>>>>>> Regards
>>>>>>>>>>>>> LF
>>>>>>>>>>>>>
>>>>>>>>>>>>> I thought that the created dep scoped bean would be
>>>>>>>>>>>>> On Feb 27, 2015 6:07 PM, "Romain Manni-Bucau" <
>>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Yes.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Will be destoyed with the bean where it is injected IIRC so
>>>>>>>>>>>>>> the app here.
>>>>>>>>>>>>>> Le 27 févr. 2015 16:59, <[email protected]> a écrit :
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hello! I have a bean with @ApplicationScoped. When I inject
>>>>>>>>>>>>>>> Instance<MyInterface> instance and my actual beans implementing 
>>>>>>>>>>>>>>> MyInstance
>>>>>>>>>>>>>>> are dependentscoped they get recreated over and over and are 
>>>>>>>>>>>>>>> not gc'd.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Expected behavior?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Cheers
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>>

Reply via email to