<font size=2 face="sans-serif">Thank you for the prompt replies. <br>
<br>
In answer to your question. It is UiSnapshotData which gets injected under
OWB. <br>
<br>
Regards<br>
Benjamin</font>
<br>
<br>
<br>
<br><font size=1 color=#5f5f5f face="sans-serif">From: &nbsp; &nbsp; &nbsp;
&nbsp;</font><font size=1 face="sans-serif">Martin Kouba &lt;mkouba@redhat.com&gt;</font>
<br><font size=1 color=#5f5f5f face="sans-serif">To: &nbsp; &nbsp; &nbsp;
&nbsp;</font><font size=1 face="sans-serif">Matej Novotny &lt;manovotn@redhat.com&gt;,
Benjamin Confino/UK/IBM@IBMGB, </font>
<br><font size=1 color=#5f5f5f face="sans-serif">Cc: &nbsp; &nbsp; &nbsp;
&nbsp;</font><font size=1 face="sans-serif">Emily Jiang/UK/IBM@IBMGB,
Tom Evans/UK/IBM@IBMGB, weld-dev@lists.jboss.org</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Date: &nbsp; &nbsp; &nbsp;
&nbsp;</font><font size=1 face="sans-serif">29/11/2016 07:42</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Subject: &nbsp; &nbsp;
&nbsp; &nbsp;</font><font size=1 face="sans-serif">Re: [weld-dev]
Specializes bean in war causes unsatisfied resolution exception</font>
<br>
<hr noshade>
<br>
<br>
<br><tt><font size=2>Matej is correct. The specializing bean from the war
disables the <br>
specialized bean from ear/lib. And since the bean from war is not <br>
visible to the bean from ear/lib (KinderzuschussKinderServiceImpl) an <br>
unsatisfied dependency exists.<br>
<br>
By the way, what instance of SnapshotData gets injected into <br>
KinderzuschussKinderServiceImpl for OWB? Is it UiSnapshotData from the
<br>
war/lib?<br>
<br>
Martin<br>
<br>
Dne 29.11.2016 v 07:06 Matej Novotny napsal(a):<br>
&gt; Hello Benjamin<br>
&gt;<br>
&gt; Thanks for well written question!<br>
&gt;<br>
&gt;&gt; (You can see the application at was_bugs/was_bug22 at master ·<br>
&gt;&gt; thikade/was_bugs · GitHub )<br>
&gt;<br>
&gt; Thanks! Took a glance and it looks like the infamous EAR visibility
issue.<br>
&gt;<br>
&gt;&gt; My first thought was that this application should not work<br>
&gt;<br>
&gt; I agree with that. Anything located in EAR/lib cannot really &quot;see&quot;
into WAR.<br>
&gt; Hence the bean with @Specializes (in WAR) will disable the original
bean (in EAR/lib) and the injection cannot be performed as<br>
&gt; the specialized bean is not visible to the archive in EAR/lib.<br>
&gt;<br>
&gt;&gt; I confirmed that this application works fine on OpenWebBeans.<br>
&gt;<br>
&gt; The fact that it does NOT work should be in accord with Java EE spec
and its visibility restrictions.<br>
&gt; Maybe you should be asking OWB guys why does it work at all?<br>
&gt;<br>
&gt; I am no EAR expert but I really think this is Java EE spec (not CDI)
intended behavior.<br>
&gt;<br>
&gt; Matej<br>
&gt;<br>
&gt; ----- Original Message -----<br>
&gt;&gt; From: &quot;Benjamin Confino&quot; &lt;BENJAMIC@uk.ibm.com&gt;<br>
&gt;&gt; To: weld-dev@lists.jboss.org<br>
&gt;&gt; Cc: &quot;Tom Evans&quot; &lt;TEVANS@uk.ibm.com&gt;, &quot;Emily
Jiang&quot; &lt;EMIJIANG@uk.ibm.com&gt;<br>
&gt;&gt; Sent: Monday, November 28, 2016 4:56:12 PM<br>
&gt;&gt; Subject: [weld-dev] Specializes bean in war causes unsatisfied
resolution &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
exception<br>
&gt;&gt;<br>
&gt;&gt; Hello<br>
&gt;&gt;<br>
&gt;&gt; A customer of mine sent in a test application with the following
structure:<br>
&gt;&gt;<br>
&gt;&gt; A war file inside ear<br>
&gt;&gt; Two jar files inside ear/lib<br>
&gt;&gt; One jar file inside ear/war/WEB-INF/lib<br>
&gt;&gt;<br>
&gt;&gt; There is a class inside one of the ear/lib jar files which @Injects
a bean<br>
&gt;&gt; from the other ear/lib jar file<br>
&gt;&gt;<br>
&gt;&gt; And there is a class inside the ear/war/WEB-INF/lib jar file that<br>
&gt;&gt; @Specializes the bean inside an ear/lib jar file<br>
&gt;&gt;<br>
&gt;&gt; (You can see the application at was_bugs/was_bug22 at master ·<br>
&gt;&gt; thikade/was_bugs · GitHub )<br>
&gt;&gt;<br>
&gt;&gt; Attempting to run this application on Weld results in an Unsatisfied<br>
&gt;&gt; Resolution Exception. When I remove the jar containing the @Specializes
bean<br>
&gt;&gt; the application works correctly.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; My first thought was that this application should not work, because
the war<br>
&gt;&gt; file and it's internal jar would have a second classloader that
would be<br>
&gt;&gt; invisible to the application classloader. However the customer
attested, and<br>
&gt;&gt; I confirmed that this application works fine on OpenWebBeans.<br>
&gt;&gt;<br>
&gt;&gt; I do not think this is an integration issue, because I tested
this on Wildfly<br>
&gt;&gt; and got the same error.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; So it seems that Weld throws an Unsatisfied Resolution Exception
if<br>
&gt;&gt; @specializes exists in a class that is loaded by a classloader
which is not<br>
&gt;&gt; visible .<br>
&gt;&gt;<br>
&gt;&gt; What do you think is the correct behaviour is in this instance?
>From a<br>
&gt;&gt; classloading perspective a class inside ear/lib should not be
able to see a<br>
&gt;&gt; class inside ear/war; but on the other hand the entire purpose
of a<br>
&gt;&gt; @Specializes bean is that you drop it into your application and
it replaces<br>
&gt;&gt; the original bean. It feels appropriate that you can drop in a
war file<br>
&gt;&gt; containing the @Specializes bean and it just works without you
having to do<br>
&gt;&gt; anything extra.<br>
&gt;&gt;<br>
&gt;&gt; Best regards<br>
&gt;&gt; Benjamin<br>
&gt;&gt;<br>
&gt;&gt; Unless stated otherwise above:<br>
&gt;&gt; IBM United Kingdom Limited - Registered in England and Wales with
number<br>
&gt;&gt; 741598.<br>
&gt;&gt; Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire
PO6 3AU<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; weld-dev mailing list<br>
&gt;&gt; weld-dev@lists.jboss.org<br>
&gt;&gt; </font></tt><a href="https://lists.jboss.org/mailman/listinfo/weld-dev"><tt><font size=2>https://lists.jboss.org/mailman/listinfo/weld-dev</font></tt></a><tt><font size=2><br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; weld-dev mailing list<br>
&gt; weld-dev@lists.jboss.org<br>
&gt; </font></tt><a href="https://lists.jboss.org/mailman/listinfo/weld-dev"><tt><font size=2>https://lists.jboss.org/mailman/listinfo/weld-dev</font></tt></a><tt><font size=2><br>
&gt;<br>
<br>
</font></tt>
<br><font size=2 face="sans-serif"><br>
Unless stated otherwise above:<br>
IBM United Kingdom Limited - Registered in England and Wales with number
741598. <br>
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6
3AU<br>
</font>