A further question on EJB injection,
In the Weld reference doc, performing injection on JavaEE
component class:
To help the integrator, Weld provides
WeldManager.fireProcessInjectionTarget() which returns the
InjectionTarget to use.
The statement was not mentioned when it talks about
performing injection on EJBs. My question is that do we need
to call the above method to fire the event.
Thanks
Emily
On Fri, May 8, 2015 at 11:29 AM, Emily Jiang
<[email protected] <mailto:[email protected]>>
wrote:
Thank you Jozef for your helpful response! I have
another clarification on the interceptors on JavaEE
component classes.
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?
Thanks
Emily
On Thu, May 7, 2015 at 8:22 AM, Jozef Hartinger
<[email protected] <mailto:[email protected]>> wrote:
Hi Emily, comments inline.
On 05/06/2015 05:38 PM, Emily Jiang wrote:
I have a few questions on ejb integration on Weld.
1)Does Weld handle the instance creation for ejb
(using injectionTarget.produce) or delegate the
instance creation to EJB container? I guess Weld
will create the instead as it can manage
decorators. If not, how can decorators be managed?
Please confirm.
Correct. Weld creates EJB instances using
InjectionTarget.produce()
2) When Weld creates the EJB instance, how can the
other non-CDI aroundconstruct interceptors (such as
the interceptors defined via ejb-jar.xml or
@Interceptors) be passed in? I found out the
WeldCreationContext and AroundConstructCallback but
I cannot find anything mentioned in the weld
reference doc. Is this the right plugin point?
Correct, AroundConstructCallback is the API you need
to use. The JavaDoc should be helpful. Let me know
if anything is not clear. I'll add a note about it
to the refdoc.
3)If Weld creates the EJB instance, how can all
interceptors (cdi style and ejb style) be invoked?
Will the instance need to be passed back to EJB
container together with all CDI interceptors (get
hold of them via EjbEndpointServiceImpl.java) and
EJB container needs to manage the interceptors
being invoked?
For interception type other than @AroundConstruct we
leave it up to the EJB implementation to handle
interception. Information about CDI interceptors is
exposed to the EJB implementation via
EjbServices.registerInterceptors()
4)In Weld spec, it says you must register the
SessionBeanInterceptor as the inner most
interceptor in the stack for all EJBS. Can you
clarify what inner most means? Does this
interceptor need to be the first EJB interceptor to
be called or the last EJB interceptor to be invoked?
Not sure why it says inner most - it should be outer
most instead that is it should be called as first so
that the @RequestScope is available for the other
interceptors called later in the chain.
--
Thanks
Emily
=================
Emily Jiang
[email protected] <mailto:[email protected]>
_______________________________________________
weld-dev mailing list
[email protected] <mailto:[email protected]>
https://lists.jboss.org/mailman/listinfo/weld-dev
--
Thanks
Emily
=================
Emily Jiang
[email protected] <mailto:[email protected]>
--
Thanks
Emily
=================
Emily Jiang
[email protected] <mailto:[email protected]>