Download presentation
Presentation is loading. Please wait.
Published byAbraham Ward Modified over 9 years ago
1
Java Naming and Directory Interface JNDI
2
v001025JNDI2 Topics Naming and Directory Services JNDI Overview Features and Code Samples JNDI Providers References
3
v001025JNDI3 Naming Service Associate names with objects (bind) Retrieve objects by their name (lookup) Examples: RMI Registry CORBA Naming Service (COSNaming) Domain Name Service (DNS) File system
4
v001025JNDI4 Contexts Contains a set of bindings and lookup operations Has its own naming convention Examples File system directory:“/” DNS domain:“edu” LDAP: “c=us”
5
v001025JNDI5 Names Logical identifier assigned to an object Naming convention defined by Naming System Examples /dir/dir2/file for UNIX drive:\dir\string for DOS cn=dan, o=ISP for LDAP www.cise.ufl.edu for DNS
6
v001025JNDI6 Names (Cont) Atomic Name name used in a binding Ex. filename in a directory Compound Name sequence of atomic names /usr/bin/ls
7
v001025JNDI7 Names (Cont) Composite Name applies multiple naming systems http://www.apl.jhu.edu/~weimer/ URL scheme id: http DNS: www.apl.jhu.edu UNIX and webserver: /usr/weimer/public_html
8
v001025JNDI8 Directory Service Can obtain an object with attributes and search for objects based on attributes Current Directory Systems X.500 - ISO standard. Complex. LDAP - Simplified X.500 over TCP/IP NDS - Novell Directory Services. NIS - Directory service for Solaris
9
v001025JNDI9 Attributes Common LDAP Attributes c = Country o = Organization ou = Organizational Unit cn = Common Name (typically first or full name) sn = User’s surname
10
v001025JNDI10 Naming and Directory Targets Resources printers machines Users Java Objects !
11
v001025JNDI11 Naming Vs. Directory Naming Services simply assign logical names to addresses or objects localhost => 127.0.0.1 white pages Directory Services add attributes and attribute-based searching find all hosts that are Sparc Solaris and have available disk space yellow pages
12
v001025JNDI12 JNDI Goals Provide a consistent API to access different naming and directory services. Clients learn one API. Different naming and directory systems can be combined into one logical system New naming service implementations can be added with no client modifications
13
v001025JNDI13 JNDI Architecture Overview JNDI API JNDI Service Provider Interface Java Client Application JNDI Naming Manager DNS LDAP CORBA RMI Anything
14
v001025JNDI14 JNDI Architecture Application Programming Interface (API) API for client programmer Unifying interface Service Provider Interface (SPI) For vendors enabling JNDI access to their naming/directory service
15
v001025JNDI15 JNDI API Included in Java 2 SDK v 1.3 Have to download for JDK 1.1 and SDK 1.2 Packages javax.naming javax.naming.directory javax.naming.event javax.naming.ldap javax.naming.spi
16
v001025JNDI16 Service Providers Implementation for underlying products Included in Java 2 SDK 1.3 LDAP COSNaming JNDI over RMI Registry Have to download for previous versions http://java.sun.com/products/jndi/
17
v001025JNDI17 Common JNDI Tasks Obtain reference to initial context Context Operations List children of a context Bind names to objects Lookup objects via name Create/destroy contexts Note: NamingException can be thrown from most Context operations
18
v001025JNDI18 JNDI Contexts
19
v001025JNDI19 Obtain Initial Context import javax.naming.*; java.util.Properties props = new java.util.Properties(); props.put(Context.INITIAL_CONTEXT_FACTORY, “com.sun.jndi.fscontext.RefFSContextFactory”); props.put(Context.PROVIDER_URL, “file:///”); Context initContext = new InitialContext( props );
20
v001025JNDI20 Initial Context Starting point in the namespace All operations performed are relative to the initial context Specify service provider with property props.put(Context.INITIAL_CONTEXT_FACTORY”, “com.sun.jndi.fscontext.RefFSContextFactory” );
21
v001025JNDI21 Initial Context (Cont) Specify provider-specific properties LDAP props.put(Context.PROVIDER_URL, “ldap://host:port”); props.put(Context.SECURITY_PRINCIPAL, “user” ); props.put(Context.SECURITY_CREDENTIALS, “password”); File System props.put(Context.PROVIDER_URL, “file://tmp/”); Create InitialContext initContext = new InitialContext( props );
22
v001025JNDI22 List children NamingEnumeration children = initContext.list(“”); while( children.hasMore() ) { NameClassPair nc = (NameClassPair) children.next(); System.out.println(nc.getName()); System.out.println(nc.getClassName()); } list() returns a NamingEnumeration of NameClassPair objects listBindings() returns a NamingEnumeration of Binding objects
23
v001025JNDI23 Binding Names to an Object Bind name to object within a context File f = new File(“/tmp/dan”); tmpDirContext.bind(“dan”, f ); NameAlreadyBoundException occurs if “dan” is already bound in the tmp context Can use unbind() or rebind()
24
v001025JNDI24 Object Lookup Lookup object in a context String name; Object o = initContext.lookup(name); name can be compound “/usr/tmp/dir/myfile” Filesystem provider returns File for files
25
v001025JNDI25 Attributes DirContext contains an object with attributes for each contained binding Common LDAP Attributes c = Country o = Organization ou = Organizational Unit cn = Common Name (typically first or full name) sn = User’s surname
26
v001025JNDI26 Basic Search Specify a set of attributes that an entry must have. Specify required attribute values Specify attributes to return search(String name, Attributes match, String[] retAttrIds ) Returns NamingEnumeration of SearchResults
27
v001025JNDI27 Storing objects Object Types to store Java Serializable Object Referenceable Java Object Remote Objects like RMI and CORBA objects
28
v001025JNDI28 Federation Composite names span multiple namespaces ou=People/tmp/myFile File f = (File) ctx.lookup(“ou=People/tmp/myFile”); lookup on this name will traverse through LDAP and the Filesystem provider to retrieve the file
29
v001025JNDI29 JNDI Providers LDAP com.novell.naming.service.nds.NdsInitialContextFactory NIS com.sun.jndi.nis.NISCtxFactory RMI com.sun.jndi.rmi.registry.RegistryContextFactory COSNaming ( CORBA Naming System ) Files com.sun.jndi.fscontext.[Ref]FSContextFactory
30
v001025JNDI30 Setup Requirement For 1.3, essentially nothing. JNDI should be included in the distribution along with the 3 providers For Java 2 SDK version 1.2 jndi.jar in $JAVA_HOME/jre/lib/ext For jdk 1.1 Add jndi.jar to the CLASSPATH
31
v001025JNDI31 Summary Provide a consistent API to access different naming and directory services. Clients learn one API. Different naming and directory systems can be combined into one logical system New naming service implementations can be added with no client modifications
32
v001025JNDI32 Resources JNDI API Tutorial and Reference, Rosanna Lee and Scott Seligman. Addison Wesley, 2000 Main JNDI Page http://java.sun.com/products/jndi/ Java Lecture Source http://www.apl.jhu.edu/~jcstaff/ejava/ejava_whatsnew_f00.htm Java Online Tutorial http://java.sun.com/docs/books/tutorial/
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.