Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [config-dev] Config questions

On Thu, Aug 26, 2021 at 9:09 AM Scott Stark <starksm64@xxxxxxxxx> wrote:
What is the JNDI way of knowing what configuration properties are in use?

You can apply @jakarta.annotation.Resource at the type level. From the javadocs:

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

Back to the top