https://issues.apache.org/bugzilla/show_bug.cgi?id=45285
Summary: RESOURCES DECLARED IN PARENT CLASSES ARE NOT INJECTED
Product: Tomcat 6
Version: unspecified
Platform: PC
OS/Version: Windows XP
Status: NEW
Severity: normal
Priority: P3
Component: Servlet & JSP API
AssignedTo: [EMAIL PROTECTED]
ReportedBy: [EMAIL PROTECTED]
According to the section EE.5.2.3 of the Java EE specification:
------------------------
Resource annotations may appear on any of the classes listed above, or on any
superclass of any class listed above. A resource annotation on any class in the
inheritance hierarchy defines a resource needed by the application component.
------------------------
I use JSF managed beans with @EJB annotated members.
If a resource is annotated in a super class of a class it's not injected.
Example:
public class Base{
@EJB
private SomeService service;
....
}
public class Child implements Base{
....
}
Base class used as managed bean has 'service' injected.
Child class used as managed bean does NOT have 'service' injected.
If I dare suggest the problem source ...
As I can see org.apache.catalina.util.DefaultAnnotationProcessor is used. It
has the following lines in its 'public void processAnnotations(Object
instance)' method:
....
Field[] fields = instance.getClass().getDeclaredFields();
....
Method[] methods = instance.getClass().getDeclaredMethods();
....
Class.getDeclaredFields method returns 'public, protected, default (package)
access, and private fields, but excludes inherited fields'.
The same thing is with Class.getDeclaredMethods.
--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]