1 / 32

Java Naming and Directory Interface

Java Naming and Directory Interface . JNDI. Topics. Naming and Directory Services JNDI Overview Features and Code Samples JNDI Providers References. Naming Service. Associate names with objects (bind) Retrieve objects by their name (lookup) Examples: RMI Registry

osmond
Download Presentation

Java Naming and Directory Interface

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Java Naming and Directory Interface JNDI

  2. Topics • Naming and Directory Services • JNDI Overview • Features and Code Samples • JNDI Providers • References JNDI

  3. 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 JNDI

  4. Contexts • Contains a set of bindings and lookup operations • Has its own naming convention • Examples • File system directory: “/” • DNS domain: “edu” • LDAP: “c=us” JNDI

  5. 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 JNDI

  6. Names (Cont) • Atomic Name • name used in a binding • Ex. filename in a directory • Compound Name • sequence of atomic names • /usr/bin/ls JNDI

  7. 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 JNDI

  8. 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 JNDI

  9. Attributes • Common LDAP Attributes c = Country o = Organization ou = Organizational Unit cn = Common Name (typically first or full name) sn = User’s surname JNDI

  10. Naming and Directory Targets • Resources • printers • machines • Users • Java Objects ! JNDI

  11. 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 JNDI

  12. 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 JNDI

  13. JNDI Architecture Overview Java Client Application JNDI API JNDI Naming Manager JNDI Service Provider Interface DNS RMI LDAP CORBA Anything JNDI

  14. 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 JNDI

  15. 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 JNDI

  16. 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/ JNDI

  17. 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 JNDI

  18. JNDI Contexts JNDI

  19. 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 ); JNDI

  20. 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” ); JNDI

  21. 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 ); JNDI

  22. 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 JNDI

  23. 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() JNDI

  24. 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 JNDI

  25. 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 JNDI

  26. 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 JNDI

  27. Storing objects • Object Types to store • Java Serializable Object • Referenceable Java Object • Remote Objects like RMI and CORBA objects JNDI

  28. 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 JNDI

  29. 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 JNDI

  30. 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 JNDI

  31. 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 JNDI

  32. 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/ JNDI

More Related