Topic : JNDI Kaster Nurmukan. JNDI2(c)CDAC(Formerly NCST) What is JNDI? Naming and Directory Services Naming Concepts Issues JNDI Architecture Programming

Embed Size (px)

Text of Topic : JNDI Kaster Nurmukan. JNDI2(c)CDAC(Formerly NCST) What is JNDI? Naming and Directory...

  • Topic : JNDIKaster Nurmukan

  • JNDI*(c)CDAC(Formerly NCST)What is JNDI?Naming and Directory ServicesNaming ConceptsIssuesJNDI ArchitectureProgramming with JNDIRole of JNDI in J2EE

  • JNDI*(c)CDAC(Formerly NCST)Class.forName(" sqlserver.SQLServerDriver");

    cnn = DriverManager.getConnection ("jdbc:microsoft:sqlserver://siddh ant:1433",username",password");

  • JNDI*(c)CDAC(Formerly NCST)Context ctx = new InitialContext();DataSource ds = (DataSource)ctx.lookup(myname);Connection con = ds.getConnection(abc,***);

  • JNDI*(c)CDAC(Formerly NCST)

    Java Naming and Directory Interface (JNDI) provides a standard interface for Java applications to access naming and directory services.

  • JNDI*(c)CDAC(Formerly NCST) 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)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)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)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)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)/usr CONTEXT /usr/people SUB-CONTEXT /usr/bin SUB-CONTEXT /usr/local SUB-CONTEXTEach atomic name is bound to a sub-context the subfolder.Subcontext are full-fledged contextsCan contain more name-object bindings, such as other files or other folders.

  • JNDI*(c)CDAC(Formerly NCST)Naming system: A connected set of contexts.Namespace: all the names contained within that naming system.

  • JNDI*(c)CDAC(Formerly NCST)Starting point for exploring a namespace.Starting point for performing all naming and directory operations.

  • JNDI*(c)CDAC(Formerly NCST)Many naming and directory products. Netscape Directory Server MicrosoftActiveDirectoryVarious 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)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)The client API Allow Java code to perform directory operations.The Service Provider: DriverThe Service Provider Interface (SPI) An interface to which naming and directory service vendors can plug in.

  • JNDI*(c)CDAC(Formerly NCST)

  • JNDI*(c)CDAC(Formerly NCST)The JNDI comprises of 5 packagesjavax.naming Contains classes and interfaces for accessing naming Extends javax.naming and provides functionality to access directory services in addition to naming services

  • JNDI*(c)CDAC(Formerly NCST)javax.naming.event Classes and interfaces for supporting event notification in naming and directory servicesjavax.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.directoryjavax.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)Used to acquire an initial contextImplementation 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) javax.naming.Context ctx = new javax.naming.InitialContext (System.getProperties()); java -Djava.naming.factory.initial= com.sun.jndi.fscontext.RefFSContextFactory -Djava.naming.provider.url= file:c:\examples.InitCtxclass of the JNDI driverprovider URL: URL that the service provider accepts for bootstrapping.

  • JNDI*(c)CDAC(Formerly NCST) Methods invoked on a Contextlist() - list of contents available at the context. names of objects bound to the JNDI tree subcontexts.lookup() - look up objects bound to the JNDI tree Return type is driver specific RMI-IIOP java.rmi.Remote file system

  • JNDI*(c)CDAC(Formerly NCST)rename() - give a new name to a context c:\temp to c:\tmpcreateSubcontext() - 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*(c)CDAC(Formerly NCST)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)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*(c)CDAC(Formerly NCST)J2EE servers have a JNDI implementation.Used to Look up beans.Connect to resource factories JDBC DataSource Java Message Service (JMS) driversAcquiring a reference to the Java Transaction APIs (JTA) UserTransaction interface.

  • JNDI*(c)CDAC(Formerly NCST)Mastering Enterprise JavaBeans by Ed Roman et. al. (Wiley)JNDI Tutorial on java.sun.comJava Server Programming J2EE Edition Volume 1 Wrox.Java Enterprise in a nutshell David Flanagan et. Al. Oreilly