Recommended: Sing it, brah! 5 fabulous songs for developers
JW's Top 5
Optimize with a SATA RAID Storage Solution
Range of capacities as low as $1250 per TB. Ideal if you currently rely on servers/disks/JBODs
Page 3 of 4
JNDI solves this problem with the Name class and its subclasses and helper classes. The Name class represents a name composed of an ordered sequences of subnames, and provides methods for working with names independent
of the underlying naming service.
As I mentioned above, it's important to remember that JNDI is an interface rather than an implementation. This fact has some disadvantages -- you need access to an existing naming service (such as an LDAP service) and you need to understand something about how it works in order to play with JNDI. On the other hand, it does allow JNDI to integrate seamlessly into an existing computing environment where an established naming service holds sway.
JNDI naming revolves around a small set of classes and a handful of operations. Let's take a look at them.
The Context interface plays a central role in JNDI. A context represents a set of bindings within a naming service that all share the
same naming convention. A Context object provides the methods for binding names to objects and unbinding names from objects, for renaming objects, and for
listing the bindings.
Some naming services also provide subcontext functionality. Much like a directory in a filesystem, a subcontext is a context
within a context. This hierarchical structure permits better organization of information. For naming services that support
subcontexts, the Context class also provides methods for creating and destroying subcontexts.
JNDI performs all naming operations relative to a context. To assist in finding a place to start, the JNDI specification defines
an InitialContext class. This class is instantiated with properties that define the type of naming service in use and, for naming services
that provide security, the ID and password to use when connecting.
For those of you familiar with the RMI Naming class, many of the methods provided by the Context interface outlined below will look familiar. Let's take a look at Context's methods:
void bind(String stringName, Object object): Binds a name to an object. The name must not be bound to another object. All intermediate contexts must already exist.void rebind(String stringName, Object object): Binds a name to an object. All intermediate contexts must already exist.Object lookup(String stringName): Returns the specified object.void unbind(String stringName): Unbinds the specified object.The Context interface also provides methods for renaming and listing bindings.
void rename(String stringOldName, String stringNewName): Changes the name to which an object is bound.
NamingEnumeration listBindings(String stringName): Returns an enumeration containing the names bound to the specified context, along with the objects and the class names of
the objects bound to them.NamingEnumeration list(String stringName): Returns an enumeration containing the names bound to the specified context, along with the class names of the objects bound
to them.
Each of these methods has a sibling that takes a Name object instead of a String object. A Name object represents a generic name. The Name class allows a program to manipulate names without having to know as much about the specific naming service in use.