[
https://issues.jboss.org/browse/WELD-1027?page=com.atlassian.jira.plugin....
]
Brendan Healey resolved WELD-1027.
----------------------------------
Resolution: Incomplete Description
Further testing has shown that the problem I'm experiencing
is not well described by this bug report so I'm closing it.
It now seems that my problem is related to using
@PersistenceContext in an overloaded method in a base class.
@Inject'ed protected base class member access problem
-----------------------------------------------------
Key: WELD-1027
URL:
https://issues.jboss.org/browse/WELD-1027
Project: Weld
Issue Type: Bug
Affects Versions: 1.1.2.Final
Environment: Glassfish 3.1.1 Chrome browser.
Reporter: Brendan Healey
In the following code I'm trying to inject a SessionScoped bean into a stateless
EJB,
but I want to do the @Inject in an abstract base class of the EJB. According to the
CDI spec it seems to suggest that this should work:
"4.2. Inheritance of member-level metadata
Suppose a class X is extended directly or indirectly by the bean class of a managed bean
or session bean Y.
If X declares an injected field x then Y inherits x."
What happens is that I can access the inherited protected member sessionView from
TestEjb,
but not from code within the base class. When I say "can access", I mean that
the injected
member is accessible at runtime and is not null.
@Named
@ViewAccessScoped
public class JsfBean extends implements Serializable {
@Inject private TestEjb ejb;
SessionView s1 = ejb.getSessionViewChild(); // sessionView injected ok
SessionView s2 = ejb.getSessionViewBase(); // s2 is null
}
@Named
@SessionScoped
public class SessionView implements Serializable {}
@Stateless
public class TestEjb extends BaseClass implements Serializable {
public SessionView getSessionViewChild() {
return sessionView;
}
}
public abstract class BaseClass implements Serializable {
@Inject
protected SessionView sessionView;
public SessionView getSessionViewBase() {
return sessionView;
}
}
What happens is that s1 is a valid SessionView reference, but s2 is null. It now
turns out that if I change the access of sessionView in BaseClass to private, it
works, but only if I clean & build before re-deployment. It will then consistently
work - unless I change it back to protected, in which case it will consistently not
work.
I am using MyFaces CODI 1.0.1 in conjunction with Weld from Glassfish 3.1.1
(v20110404-1554). I am also using JDK 7u1. I reported this on the MyFaces mailing
list but Gerhard said this looked like a weld issue.
Thanks.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira