<div dir="ltr">Thank you Jozef for the helpful info. I have another question on interceptor:<br>EE7 spec states the JavaEE component classes, listed in Table
EE.5-1, need to support interceptors. Take servlet for an example, which
methods can be intercepted?<br><br>As the servlet classes are
invoked by the container, according to CDI1.2 spec, it seems only
service(ServletRequest, ServletResponse) can be intercepted. No other
methods can be intercepted. <br><br>Normally customer applications
override doPost or doGet, but they cannot be intercepted. I cannot see
any value of support interceptors on Servlet. Anything I missed?<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, May 12, 2015 at 7:50 AM, Jozef Hartinger <span dir="ltr"><<a href="mailto:jharting@redhat.com" target="_blank">jharting@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF"><span class="">
On 05/11/2015 03:47 PM, Emily Jiang wrote:<br>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div><br clear="all">
</div>
I have a few questions on interceptors:<br>
<br>
</div>
1. CDI Interceptors on cdi beans<br>
</div>
Will the interceptors share the same creational
context as the bean it is associated with?</div>
</div>
</div>
</div>
</div>
</div>
</blockquote></span>
Yes. It is not the very same creational context but a new one with a
parent-child relationship to the one of the associated bean. This is
the same as for @Dependent dependencies<span class=""><br>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div> Will Weld managed the cdi interceptors as well as
the old-styled interceptors?<br>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote></span>
Yes, Weld manages interceptor bindings associated using interceptor
bindings as well as those associated using @Interceptors<span class=""><br>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div>@Interceptors don't work on other cdi beans except
ejb and managed beans, right?<br>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote></span>
"Managed bean" is ambiguous. Weld support interceptors on all CDI
managed beans (not on producer fields/methods nor extension-provided
beans).<span class=""><br>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div><br>
</div>
2. Interceptors on ejb beans or managed beans<br>
</div>
I think the integrator needs to create these @Interceptors
and cdi interceptors.</div>
</div>
</div>
</div>
</blockquote></span>
Yes, for EJBs and EE managed beans it is integrator's job to handle
those. Weld can handle @AroundConstruct interceptors if needed. I've
updated the docs on this topic recently:
<a href="https://github.com/jharting/core/blob/a1eb6194be36ded86dc9709c6767f5016fb98997/docs/reference/src/main/asciidoc/ri-spi.asciidoc#around-construct-interception" target="_blank">https://github.com/jharting/core/blob/a1eb6194be36ded86dc9709c6767f5016fb98997/docs/reference/src/main/asciidoc/ri-spi.asciidoc#around-construct-interception</a><span class=""><br>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div> Will these interceptors use the non-contextual
creational context (scope @Dependent) or use the ejb or
managed bean's creational context? <br>
</div>
</div>
</div>
</div>
</blockquote>
ejb or managed bean's creational context
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div><br>
Will Weld destroy the interceptors when the associated
beans are destroyed or the integrator need to destroy
them? This logic applicable to both cdi interceptors and
@Interceptors style interceptors, right?<br>
</div>
</div>
</div>
</div>
</blockquote></span>
Any time the parent (bean's) creational context is destroyed, the
children creational contexts (interceptors') are destroyed also by
Weld.<span class=""><br>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div><br>
</div>
3. Interceptors on JavaEE components<br>
</div>
I think this interceptors are created by Weld when the JavaEE
component classes are created, right? By the way, how can the
container make sure to destroy the interceptors?<br>
</div>
</div>
</blockquote></span>
This depends on how the component classes are managed. Assuming the
components are managed using Weld-provided InjectionTarget then it
is up to the integrator to decide whether it provides interception
support or whether it should be provided by Weld. This can be
configured for each InjectionTarget individually using this builder:
<a href="http://docs.jboss.org/weld/javadoc/2.2/weld-spi/org/jboss/weld/manager/api/WeldInjectionTargetBuilder.html" target="_blank">http://docs.jboss.org/weld/javadoc/2.2/weld-spi/org/jboss/weld/manager/api/WeldInjectionTargetBuilder.html</a><br>
<blockquote type="cite"><span class="">
<div dir="ltr">
<div><br>
</div>
<br>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>-- <br>
<div>Thanks<br>
Emily<br>
=================<br>
Emily Jiang<br>
<a href="mailto:ejiang@apache.org" target="_blank">ejiang@apache.org</a><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<br>
<fieldset></fieldset>
<br>
</span><pre>_______________________________________________
weld-dev mailing list
<a href="mailto:weld-dev@lists.jboss.org" target="_blank">weld-dev@lists.jboss.org</a>
<a href="https://lists.jboss.org/mailman/listinfo/weld-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/weld-dev</a></pre>
</blockquote>
<br>
</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>