Documente Academic
Documente Profesional
Documente Cultură
JNDI
(c)CDAC(Formerly NCST)
SCOT
Agenda
What is JNDI? Naming and Directory Services Naming Concepts Issues JNDI Architecture Programming with JNDI Role of JNDI in J2EE
(c)CDAC(Formerly NCST) 2
JNDI
SCOT
Class.forName("com.microsoft.jdbc. sqlserver.SQLServerDriver");
cnn = DriverManager.getConnection ("jdbc:microsoft:sqlserver://siddh ant:1433",username",password");
JNDI (c)CDAC(Formerly NCST) 3
SCOT
JNDI
(c)CDAC(Formerly NCST)
SCOT
JNDI
Java Naming and Directory Interface (JNDI) provides a standard interface for Java applications to access naming and directory services.
JNDI
(c)CDAC(Formerly NCST)
SCOT
Naming Service
Naming Service performs: Binding: Associating names with objects Lookup: Find an object based on a name. Examples: DNS and File systems Examples: DNS Filesystems
JNDI (c)CDAC(Formerly NCST) 6
SCOT
Directory Service
Directory is a naming service that stores objects with attributes. Usernames and passwords etc stored in attrs. Tree like structure
JNDI
(c)CDAC(Formerly NCST)
SCOT
Names
Atomic name is a indivisible component of a name in /etc/fstab, etc and fstab are atomic names. Compound name is zero or more atomic names put together. /etc/fstab is a compound name
JNDI (c)CDAC(Formerly NCST) 8
SCOT
Binding
Binding is an association of a name with an object. Filename autoexec.bat has a binding to some file data on the disk. c:\windows foldername is bound to a folder on your drive. Compound name such as /usr/people/ed/.cshrc consists of multiple bindings, one to usr, one to people, one to ed, and one to .cshrc.
JNDI
(c)CDAC(Formerly NCST)
SCOT
Context
Contains zero or more bindings. Each binding has a distinct atomic name. /etc contains files named mtab and exports. The /etc folder is a context containing bindings with atomic names mtab and exports. mtab and exports are each bound to a file on the disk.
JNDI
(c)CDAC(Formerly NCST)
10
SCOT
Sub-Context
/usr CONTEXT /usr/people SUB-CONTEXT /usr/bin SUB-CONTEXT /usr/local SUB-CONTEXT Each atomic name is bound to a sub-context the subfolder. Subcontext are full-fledged contexts Can contain more name-object bindings, such as other files or other folders.
JNDI (c)CDAC(Formerly NCST) 11
SCOT
JNDI
(c)CDAC(Formerly NCST)
12
SCOT
InitialContext
Starting point for exploring a namespace. Starting point for performing all naming and directory operations.
JNDI
(c)CDAC(Formerly NCST)
13
SCOT
Many naming and directory products. Netscape Directory Server MicrosoftActiveDirectory Various naming and directory protocols: Each directory standard has a different protocol for accessing the directory. Lightweight Directory Access Protocol (LDAP) Network Information System (NIS) Novells Network Directory System (NDS) EveryDS has its ownAPI.
JNDI (c)CDAC(Formerly NCST) 14
Issues
SCOT
Introducing JNDI
Standard interface to interact with naming and directory systems. For Java programs. Provides common interface to disparate directories: Same API for LDAP and NIS NDS. Used in EJB, RMI-IIOP, JDBC for operations like locating entities i.e. Users, Machines (e.g. printer), Objects, Services (e.g. datasource) etc.
JNDI (c)CDAC(Formerly NCST) 15
SCOT
JNDI Architecture
The client API Allow Java code to perform directory operations. The Service Provider: Driver The Service Provider Interface (SPI) An interface to which naming and directory service vendors can plug in.
JNDI (c)CDAC(Formerly NCST) 16
SCOT
JNDI
(c)CDAC(Formerly NCST)
17
SCOT
JNDI Packages
The JNDI comprises of 5 packages javax.naming Contains classes and interfaces for accessing naming services javax.naming.directory Extends javax.naming and provides functionality to access directory services in addition to naming services
JNDI
(c)CDAC(Formerly NCST)
18
SCOT
JNDI Packages
javax.naming.event Classes and interfaces for supporting event notification in naming and directory services javax.naming.ldap Classes and interfaces for using features that are specific to LDAP v3 that are not already covered by the more generic javax.naming.directory javax.naming.spi Vendors develop their naming/directory services conforming to SPI. Applications can then access these services through the JNDI API
JNDI (c)CDAC(Formerly NCST) 19
SCOT
InitialContextFactory
Used to acquire an initial context Implementation of the JNDI driver: Knows the specific semantics of a particular directory structure. bootstrapping. Necessary information for JNDI to acquire that initial context. The IP address of the J2EE server The port number that the J2EE server accepts Any username/password necessary to use the J2EE server.
JNDI (c)CDAC(Formerly NCST) 20
SCOT
SCOT
SCOT
rename() - give a new name to a context c:\temp to c:\tmp createSubcontext() - create a subcontext at the context c:\foo\bar at the folder c:\foo. destroySubcontext() - destroy a subcontext of the context Destroy c:\foo\bar from the folder c:\foo. bind() associates a name to a content and stores it at the Context JNDI drivers accept different parameters to bind() rebind() - forces a bind even if some object is already bound to the name. JNDI 23 (c)CDAC(Formerly NCST)
SCOT
Binding
import javax.naming.*; public class Startup { public static void main(String args[]) throws Exception { AccountImpl acct_impl = new AccountImpl(); Context ctx = new InitialContext (System.getProperties()); ctx.rebind(myname", acct_impl); } }
JNDI (c)CDAC(Formerly NCST) 24
SCOT
Looking Up
import javax.naming.*; import java.rmi.*; public class Client { public static void main (String[] args) throws Exception { Context ctx = new InitialContext (System.getProperties()); Object remoteObject = ctx.lookup(myname"); Account account = (Account) javax.rmi.PortableRemoteObject.narrow ( remoteObject, Account.class); int b = account.method1(5));}} JNDI 25 (c)CDAC(Formerly NCST)
SCOT
SCOT
References
Mastering Enterprise JavaBeans by Ed Roman et. al. (Wiley) JNDI Tutorial on java.sun.com Java Server Programming J2EE Edition Volume 1 Wrox. Java Enterprise in a nutshell David Flanagan et. Al. Oreilly
JNDI (c)CDAC(Formerly NCST) 27