hi,

please send the same mail to the weld community. codi doesn't perform the
injection itself.

thx & regards,
gerhard



2011/12/10 oversteer <brendanhealey...@yahoo.co.uk>

>
> 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'm not really sure what could
> be
> causing this, weld, codi, jdk7??
>
> Thanks.
> --
> View this message in context:
> http://old.nabble.com/%40Inject%27ed-protected-base-class-member-access-problem-tp32952025p32952025.html
> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>
>

Reply via email to