| JNDI Overview

## Service Provider Package

> The `javax.naming.spi` package provides the means by which developers of different naming/directory service providers can develop and hook up their implementations so that the corresponding services are accessible from applications that use the JNDI.

> #### Plug-In Architecture

> The `javax.naming.spi` package allows different implementations to be plugged in dynamically. These implementations include those for the initial context and for contexts that can be reached from the initial context.

> #### Java Object Support

> The `javax.naming.spi` package supports implementors of `Context.lookup()` and related methods to return Java objects that are natural and intuitive for the Java programmer. For example, if you look up a printer name from the directory, then you likely would expect to get back a printer object on which to operate. This support is provided in the form of object factories.

> This package also provides support for doing the reverse. That is, implementors of `Context.bind()` and related methods can accept Java objects and store the objects in a format acceptable to the underlying naming/directory service. This support is provided in the form of state factories.

> #### Multiple Naming Systems (Federation)

> JNDI operations allow applications to supply names that span multiple naming systems. In the process of completing an operation, one service provider might need to interact with another service provider, for example to pass on the operation to be continued in the next naming system. This package provides support for different providers to cooperate to complete JNDI operations.

> JNDI Overview: End of Lesson

> What's next? Now you can:

> - Continue on in this trail to learn how to write some short programs for looking up an object and reading attributes from a directory service.
> - Go to the The Basics trail for more in-depth lessons on performing naming and directory operations using the JNDI.

| JNDI Overview