<div dir="ltr"><div><div>Thanks Martin! We are trying to do what you suggested, however I need a way to easily identify a JavaEE component? I don&#39;t want to go through all classes to process them. I need to filter out non-JavaEE component classes as you have handled them. <br><br>The one solution I can think of is to build a static list but it is very urgly. <br><br>The following EE7 spec has made EE component classes very similar to CDI beans:<br>Per the CDI specification, dependency injection is supported on managed beans. There are currently three ways for a class to become a managed bean:<br>1.Being an EJB session bean component.<br>2.Being annotated with the ManagedBean annotation.<br>3.Satisfying the conditions described in the CDI specification.<br>Classes that satisfy at least one of these conditions will be eligible for full dependency injection support as described in the CDI specification.<br>Component classes listed in Table EE.5-1 that satisfy the third condition above, but neither the first nor the second condition, can also be used as CDI managed beans if they are annotated with a CDI bean-defining annotation or contained in a bean archive for which CDI is enabled. However, if they are used as CDI managed beans (e.g., injected into other managed classes), the instances that are managed by CDI may not be the instances that are managed by the Java EE container.<br><br></div>Thanks<br></div>Emily<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 18, 2015 at 12:38 PM, Martin Kouba <span dir="ltr">&lt;<a href="mailto:mkouba@redhat.com" target="_blank">mkouba@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I think you should create an InjectionTarget upfront, during EE component initialization (i.e. cache the IT for a component,<br>
similarly to how javax.enterprise.inject.spi.Unmanaged works) and before an EE component instance is instantiated.<br>
<br>
Martin<br>
<br>
Dne 18.5.2015 v 11:38 Emily Jiang napsal(a):<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
Thank you Martin! I did an experiment with your suggestion. The<br>
org.jboss.weld.manager.api.WeldManager.createInjectionTargetBuilder(AnnotatedType&lt;T&gt;)<br>
for EE components was called by us when an EE component class is<br>
instanciated so it is too late for the validation (I think this api is<br>
used for creating instances or I was wrong, please explain a bit more).<br>
The validation has to happen during weld  WeldBootstrap.validateBeans(),<br>
so an DefinitionException should cause the deployment failure.<br>
<br>
On Mon, May 18, 2015 at 9:02 AM, Martin Kouba &lt;<a href="mailto:mkouba@redhat.com" target="_blank">mkouba@redhat.com</a><br></span><span class="">
&lt;mailto:<a href="mailto:mkouba@redhat.com" target="_blank">mkouba@redhat.com</a>&gt;&gt; wrote:<br>
<br>
    Emily,<br>
<br>
    I&#39;ve looked at WildFly integration code and it makes use of<br>
    org.jboss.weld.manager.api.WeldManager.createInjectionTargetBuilder(AnnotatedType&lt;T&gt;)<br>
    for EE components, i.e. delegates validation to weld implemetation.<br>
<br>
    M<br>
<br>
    Dne 18.5.2015 v 09:51 Emily Jiang napsal(a):<br>
<br>
        oops. yes. Can you shed some lights on this problem?<br>
<br>
        On Mon, May 18, 2015 at 8:48 AM, Martin Kouba &lt;<a href="mailto:mkouba@redhat.com" target="_blank">mkouba@redhat.com</a><br>
        &lt;mailto:<a href="mailto:mkouba@redhat.com" target="_blank">mkouba@redhat.com</a>&gt;<br></span><div><div class="h5">
        &lt;mailto:<a href="mailto:mkouba@redhat.com" target="_blank">mkouba@redhat.com</a> &lt;mailto:<a href="mailto:mkouba@redhat.com" target="_blank">mkouba@redhat.com</a>&gt;&gt;&gt; wrote:<br>
<br>
             Emily,<br>
<br>
             I believe this one belongs rather to the weld-dev ML.<br>
<br>
             Martin<br>
<br>
             Dne 18.5.2015 v 09:23 Emily Jiang napsal(a):<br>
<br>
<br>
                 In CDI1.2 spec, section 5.5.7<br>
                 If a Java EE component class supporting injection that<br>
        is not a<br>
                 bean has<br>
                 an injection point of<br>
                 type InjectionPoint and qualifier @Default, the container<br>
                 automatically<br>
                 detects the problem<br>
                 and treats it as a definition error.<br>
<br>
                 How can I plugin this validation? Is there a callback<br>
        spi I can<br>
                 use to<br>
                 validate the injection point on JavaEE component? This<br>
        exception<br>
                 needs<br>
                 to be thrown during the application deployment.<br>
<br>
                 --<br>
                 Thanks<br>
                 Emily<br>
                 =================<br>
                 Emily Jiang<br>
        <a href="mailto:ejiang@apache.org" target="_blank">ejiang@apache.org</a> &lt;mailto:<a href="mailto:ejiang@apache.org" target="_blank">ejiang@apache.org</a>&gt;<br>
        &lt;mailto:<a href="mailto:ejiang@apache.org" target="_blank">ejiang@apache.org</a> &lt;mailto:<a href="mailto:ejiang@apache.org" target="_blank">ejiang@apache.org</a>&gt;&gt;<br>
                 &lt;mailto:<a href="mailto:ejiang@apache.org" target="_blank">ejiang@apache.org</a> &lt;mailto:<a href="mailto:ejiang@apache.org" target="_blank">ejiang@apache.org</a>&gt;<br>
        &lt;mailto:<a href="mailto:ejiang@apache.org" target="_blank">ejiang@apache.org</a> &lt;mailto:<a href="mailto:ejiang@apache.org" target="_blank">ejiang@apache.org</a>&gt;&gt;&gt;<br>
<br>
<br>
<br>
<br>
<br>
        --<br>
        Thanks<br>
        Emily<br>
        =================<br>
        Emily Jiang<br>
        <a href="mailto:ejiang@apache.org" target="_blank">ejiang@apache.org</a> &lt;mailto:<a href="mailto:ejiang@apache.org" target="_blank">ejiang@apache.org</a>&gt;<br>
        &lt;mailto:<a href="mailto:ejiang@apache.org" target="_blank">ejiang@apache.org</a> &lt;mailto:<a href="mailto:ejiang@apache.org" target="_blank">ejiang@apache.org</a>&gt;&gt;<br>
<br>
<br>
    --<br></div></div><span class="">
    Martin Kouba<br>
    Software Engineer<br>
    Red Hat, Czech Republic<br>
<br>
<br>
<br>
<br>
--<br>
Thanks<br>
Emily<br>
=================<br>
Emily Jiang<br>
<a href="mailto:ejiang@apache.org" target="_blank">ejiang@apache.org</a> &lt;mailto:<a href="mailto:ejiang@apache.org" target="_blank">ejiang@apache.org</a>&gt;<br>
</span></blockquote><div class="HOEnZb"><div class="h5">
<br>
-- <br>
Martin Kouba<br>
Software Engineer<br>
Red Hat, Czech Republic<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature">Thanks<br>Emily<br>=================<br>Emily Jiang<br><a href="mailto:ejiang@apache.org" target="_blank">ejiang@apache.org</a><br></div>
</div>