tomee-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nuno G. de M (JIRA)" <>
Subject [jira] [Commented] (TOMEE-1586) CDI Producer Injection Point Divergence against WELD
Date Fri, 29 May 2015 21:54:18 GMT


Nuno G. de M commented on TOMEE-1586:

Hi Romain,

Please close this issue, the JBOSS team is looking at it under:

Kindest regards,

> CDI Producer Injection Point Divergence against WELD
> ----------------------------------------------------
>                 Key: TOMEE-1586
>                 URL:
>             Project: TomEE
>          Issue Type: Bug
>    Affects Versions: 1.7.1
>         Environment: Windows 7, Tomee 1.7.1
>            Reporter: Nuno G. de M
>            Priority: Minor
>             Fix For: 1.7.2
> In a relative obscure/non-trivial Injection/production scenarion of CDI beans, there
is a difference between the Injection Point passed to a producer under WELD bundled with Glassfish
3.1.2.X and Weblogic 12.1.2 vs TomEE open-cdi.
> Please see the zip file provided in the google drive link bellow.
> The zip file cotains a .docx and builds on top of the sample project provided from TOMEE-1580
> Careful with the persistence.xml file of the project since its current commit state it
will deploy glassfish 3.1.2 but not to TOmee 1_7_1 due to JNDI Name and Jar-file locaiton
> In any case, the issue is describe in the docx.
> It is not clear if the bug is the implementation of WELD or of OpenCdi.
> In fact the behavior of OpenCDI seems to be more logical - from my point of view - but
since the WELD is the reference implementation, you are being assigned this bug.
> TO summarize the issue:
> You will have a @RequestScoped bean being injected a @qualified "Holder bean".
> For this HolderBean there will be a producer.
> And the @Qualifier for the injection willl have an attribute value - e.g. @Qualifier(value="rockBalboa")
> (2) This producer that will provide the HolderInstance will use the BeanManager to create
an instance of the "Holder" object tha tis specific fo the qualifier value (rockyBalboa)
> (3) When the BeanManager is creating the Holder object it will try to resolve the @Injection
points of the holder.
> Namely there will be an 
> @Iject
> @Qaulifier 
> Instance<SomeInterface>
> Within this holder object.
> (4) The big diffence between WELD and OpenCDI now seems the be the following.
> Each of the Instances that will be iterated over this Instace attribute are created through
a second producer.
> And on this second producer the InjectionPoint object is different in WELD and OpenCdi.
> In Weld the injection point has the same charateristics of the Ibjection point passed
to the Producer of the Holder object.
> On OpenCDI the injection point has the characterists of the Holder object iself.
> When your code is based on WELD, this has the negative effect that if your code depended
on the InjectionPoint in this very specific circunstance to carry the "rockyBalboa" value
that existed in the @RequestScoped bean that initially asked for a Holder instance .... well
only on Weblogic and Glassfish will this happen.
> On Tomee the producer for the Holder will get it, but not the producer for the nested
> I would request that if this issue belongs to WELD that you forward the bug to them.
> I give low priority to this Bug - since there are programtic ways to make the code work
under both implementations. The holder object has knowledge of the original injection point
annotation and can therefore force its knowledge of "rockyBalboa" into the underlying beans
> But still, code has to be reworked to funciton under both implementations.
> Kindest regards,
> Nuno.

This message was sent by Atlassian JIRA

View raw message