[
https://issues.jboss.org/browse/CDI-414?page=com.atlassian.jira.plugin.sy...
]
Antoine Sabot-Durand edited comment on CDI-414 at 9/15/14 9:02 AM:
-------------------------------------------------------------------
[~agoncal], The reference is here :
http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#biz_method. The last sentence is the
important part here (I missed it before) :
{quote}
Otherwise, the invocation is treated as a normal Java method call and is not intercepted
by the container.
{quote}
So the fact that inner calls shouldn't be intercepted or decorated doesn't come
from interceptor spec but from CDI spec itself. We could imagine change that : keep this
default behaviour and add an option that could activate AOP on inner calls.
was (Author: antoinesabot-durand):
@agoncal, The reference is here :
http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#biz_method. The last sentence is the
important part here (I missed it before) :
{quote}
Otherwise, the invocation is treated as a normal Java method call and is not intercepted
by the container.
{quote}
So the fact that inner calls shouldn't be intercepted or decorated doesn't come
from interceptor spec but from CDI spec itself. We could imagine change that : keep this
default behaviour and add an option that could activate AOP on inner calls.
Support for "self" injection
----------------------------
Key: CDI-414
URL:
https://issues.jboss.org/browse/CDI-414
Project: CDI Specification Issues
Issue Type: Bug
Components: Resolution
Reporter: arjan tijms
Many features of CDI and EJB work by means of a proxy that intercepts calls and adds
'aspects'. In Java it's however not possible to decorate the {{this}} pointer,
so methods called on the same bean instance from within a method in the bean do not get
their 'aspects' applied.
This is a well known limitation, but in EJB it's possible to work around this by
injecting a bean into itself. E.g.
{code}
@Stateless
public class Foo {
@EJB
private Foo self;
// ...
}
{code}
Also see
http://adam-bien.com/roller/abien/entry/how_to_self_invoke_ejb
Unfortunately using CDI and {{@Inject}} this doesn't work. Weld for instance fails
the deployment and logs:
{noformat}
WELD-001443 Pseudo scoped bean has circular dependencies.
{noformat}
See also:
http://adam-bien.com/roller/abien/entry/inject_vs_ejb
Although there are workarounds, it would be great if {{@Inject}} in combination with CDI
could support self injection as well.
With that projects migrating from {{@EJB}} to {{@Inject}} can do so more easily and the
capability can be convenient for new projects as well (e.g. calling two separate
{{@Transactional}} methods from a single method without being required to create a new
bean).
--
This message was sent by Atlassian JIRA
(v6.3.1#6329)