What is the JNDI way of knowing what configuration properties are in use?
If the annotation is applied to the component class, the annotation declares a resource that the application will look up at runtime.
The intention of allowing this was to facilitate an ecosystem of class-oriented tools that could discover what programmatic Context lookups were taking place within an otherwise opaque component.
So if I'm "in" a class named Gorp, and I'm looking up "frobnicator" from a Context programmatically at runtime "inside" it, I would add @Resource to the class in which I'm performing the lookup:
@Resource(name = "frobnicator", type = Frobnicator.class)
public class Gorp {
public void doSomething() {
Frobnicator frobnicator = (Frobnicator)context.lookup("frobnicator");
}
}
(Obviously if the application developer puts @Resource(name = "nonexistent", type = Frobnicator.class) instead of @Resource(name = "frobnicator", type = Frobnicator.class) and nevertheless looks up "frobnicator" she has made a mistake.)
Then the idea was an application server would ship with some (probably GUI) tool that would discover those annotations and could therefore enable the application assembler and the deployer to learn that a Frobnicator-typed reference would need to exist such that it is accessible to the component at runtime using the component's namespace.
Note as well in all of this that there is, of course, no requirement that the name by which the application assembler or deployer refers to the reference be the same as the name by which the component developer refers to it, nor is there any requirement on how the Frobnicator would be installed into the JNDI tree.
Best,
Laird