Service Locator
Skip to end of metadata
Go to start of metadata

The functionality of the openejb.jndiname.format allows for writing some really fun service locator code. Creating the exact layout you want using the exact data you want means you can create robust libraries for pulling things out of JNDI.

Lookup examples

To get the creative juices flowing here are a few examples of lookup methods you could create for your service locator, the jndi name formats that would work with those lookups, and examples of client code using the service locator. For simplicity, we'll assume all the lookup examples start with this basic class that has a built-in lookup allowing for a common prefix to be optionally applied to the beginning of all lookup strings.

MyLocator.java

Just the interface

Usable with JNDI name formats ending in the full class name of the interface such as:

  • {interfaceClass}

Or with a common prefix or with a common prefix supplied in constructor such as:

  • {moduleId}/{interfaceClass}
  • ejb/{moduleId}/{interfaceClass}

Interface class and a prefix

Usable with JNDI name formats including a varying prefix such as ejbName or deploymentID
and ending in the full class name of the interface

  • {ejbName}/{interfaceClass}
  • {deploymentId}/{interfaceClass}

Or with a common prefix or with a common prefix supplied in constructor such as:

  • {moduleId}/{ejbName}/{interfaceClass}
  • ejb/{moduleId}/{deploymentId}/{interfaceClass}

Interface class and ejb class

Usable with JNDI name formats comprised of the interfaceClass and ejbClass

For variation, the interface class is the prefix and the ejb class is the
suffix. This is neat as the the prefix (the interface class name) becomes
a jndi context with one binding in it for each implementing ejb class.

Works with:

  • {interfaceClass}/{ejbClass}

Or with a common prefix or with a common prefix supplied in constructor such as:

  • {moduleId}/{interfaceClass}/{ejbClass}
  • ejb/{moduleId}/{interfaceClass}/{ejbClass}

Interface class and ejb class with simple names

Similar to the above example but using the simple name of the classes resulting
in a JNDI tree that's a bit more human readable.

  • {ejbClass.simpleName}/{interfaceClass.simpleName}

Or with a common prefix or with a common prefix supplied in constructor such as:

  • {moduleId}/{ejbClass.simpleName}/{interfaceClass.simpleName}
  • ejb/{moduleId}/{ejbClass.simpleName}/{interfaceClass.simpleName}
Labels
  • No labels