[weld-dev] Interceptors
Emily Jiang
emijiang6 at googlemail.com
Sat May 16 18:02:49 EDT 2015
Thank you Martin! I think if I specifiy a class level interceptor,
service(ServiceRequest, ServletResponse) will be intercepted but not
doGet(), as doGet will be called by .service(ServletRequest,
ServletResponse) directly not via a proxy. Did I miss anything?
On Fri, May 15, 2015 at 11:45 AM, Martin Kouba <mkouba at redhat.com> wrote:
> Dne 13.5.2015 v 00:27 Emily Jiang napsal(a):
>
>> Thank you Jozef for the helpful info. I have another question on
>> interceptor:
>> 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?
>>
>> 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.
>>
>> 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?
>>
>
> The serlet container always invokes Servlet.service(ServletRequest,
> ServletResponse)() which delegates to one of those convenient methods
> (doGet() etc.) in case of javax.servlet.http.HttpServlet. So if you extend
> HttpServlet and only override doGet() it would be "intercepted" if you
> annotate the servlet class with an interceptor binding. If you only
> annotate the doGet() method an interceptor will not be invoked.
>
>
>> On Tue, May 12, 2015 at 7:50 AM, Jozef Hartinger <jharting at redhat.com
>> <mailto:jharting at redhat.com>> wrote:
>>
>> On 05/11/2015 03:47 PM, Emily Jiang wrote:
>>
>>>
>>> I have a few questions on interceptors:
>>>
>>> 1. CDI Interceptors on cdi beans
>>> Will the interceptors share the same creational context as the
>>> bean it is associated with?
>>>
>> 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
>>
>>> Will Weld managed the cdi interceptors as well as the old-styled
>>> interceptors?
>>>
>> Yes, Weld manages interceptor bindings associated using interceptor
>> bindings as well as those associated using @Interceptors
>>
>>> @Interceptors don't work on other cdi beans except ejb and managed
>>> beans, right?
>>>
>> "Managed bean" is ambiguous. Weld support interceptors on all CDI
>> managed beans (not on producer fields/methods nor extension-provided
>> beans).
>>
>>>
>>> 2. Interceptors on ejb beans or managed beans
>>> I think the integrator needs to create these @Interceptors and cdi
>>> interceptors.
>>>
>> 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:
>>
>> https://github.com/jharting/core/blob/a1eb6194be36ded86dc9709c6767f5016fb98997/docs/reference/src/main/asciidoc/ri-spi.asciidoc#around-construct-interception
>>
>>> Will these interceptors use the non-contextual creational context
>>> (scope @Dependent) or use the ejb or managed bean's creational
>>> context?
>>>
>> ejb or managed bean's creational context
>>
>>>
>>> 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?
>>>
>> Any time the parent (bean's) creational context is destroyed, the
>> children creational contexts (interceptors') are destroyed also by
>> Weld.
>>
>>>
>>> 3. Interceptors on JavaEE components
>>> 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?
>>>
>> 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:
>>
>> http://docs.jboss.org/weld/javadoc/2.2/weld-spi/org/jboss/weld/manager/api/WeldInjectionTargetBuilder.html
>>
>>>
>>>
>>> --
>>> Thanks
>>> Emily
>>> =================
>>> Emily Jiang
>>> ejiang at apache.org <mailto:ejiang at apache.org>
>>>
>>>
>>> _______________________________________________
>>> weld-dev mailing list
>>> weld-dev at lists.jboss.org <mailto:weld-dev at lists.jboss.org>
>>> https://lists.jboss.org/mailman/listinfo/weld-dev
>>>
>>
>>
>>
>>
>> --
>> Thanks
>> Emily
>> =================
>> Emily Jiang
>> ejiang at apache.org <mailto:ejiang at apache.org>
>>
>>
>> _______________________________________________
>> weld-dev mailing list
>> weld-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/weld-dev
>>
>>
>
--
Thanks
Emily
=================
Emily Jiang
ejiang at apache.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/weld-dev/attachments/20150516/ca22fb37/attachment-0001.html
More information about the weld-dev
mailing list