<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<!--
Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation.  Oracle designates this
particular file as subject to the "Classpath" exception as provided
by Oracle in the LICENSE file that accompanied this code.

This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).

You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.

Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
CA 95054 USA or visit www.sun.com if you need additional information or
have any questions.
-->
</head>
<body bgcolor="white">

Provides the means for dynamically plugging in support for accessing
naming and directory services through the <tt>javax.naming</tt> 
and related packages.

<p>
This package defines the service provider interface (SPI) of the Java Naming
and Directory Interface<font size=-2><sup>TM</sup></font> (JNDI). &nbsp;
JNDI provides naming and directory functionality to applications
written in the Java programming language.  It is designed to be
independent of any specific naming or directory service
implementation.  Thus a variety of services--new, emerging, and
already deployed ones--can be accessed in a common way.

<p>
The JNDI SPI provides the means for creating JNDI service providers,
through which JNDI applications access different naming and
directory services.


<h4>Plug-in Architecture</h4>

The service provider package allows different implementations to be plugged in
dynamically.
These different implementations include those for the
<em>initial context</em>,
and implementations for contexts that can be reached 
from the initial context.

<h4>Java Object Support</h4>

The service provider package provides support 
for implementors of the
<tt>javax.naming.Context.lookup()</tt> 
method and related methods to return Java objects that are natural
and intuitive for the Java programmer.
For example, when looking up a printer name from the directory,
it is natural for you to expect to get
back a printer object on which to operate.


<h4>Multiple Naming Systems (Federation)</h4>

JNDI operations allow applications to supply names that span multiple
naming systems.  So 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.
The service provider package provides support for
different providers to cooperate to complete JNDI operations.


<h2>Package Specification</h2>

The JNDI SPI Specification and related documents can be found in the
<a href="../../../../technotes/guides/jndi/index.html">JNDI documentation</a>.

@since 1.3

</body>
</html>
<body>
</body>
