ffb51b067b45043d8b37ba4a66dc3899.ppt
- Количество слайдов: 28
In Lacture CSS-441 Advanced Programming using JAVA EE Topic : JNDI Kaster Nurmukan
Agenda • • JNDI What is JNDI? Naming and Directory Services Naming Concepts Issues JNDI Architecture Programming with JNDI Role of JNDI in J 2 EE 2 (c)CDAC(Formerly NCST)
• Class. for. Name("com. microsoft. jdbc. sqlserver. SQLServer. Driver"); • cnn = Driver. Manager. get. Connection ("jdbc: microsoft: sqlserver: //siddh ant: 1433", “username", “password"); JNDI 3 (c)CDAC(Formerly NCST)
• Context ctx = new Initial. Context(); • Data. Source ds = (Data. Source)ctx. lookup(“myname”); • Connection con = ds. get. Connection(“abc”, ”***”); JNDI 4 (c)CDAC(Formerly NCST)
JNDI Java Naming and Directory Interface (JNDI) provides a standard interface for Java applications to access naming and directory services. JNDI 5 (c)CDAC(Formerly NCST)
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 6 (c)CDAC(Formerly NCST)
Directory Service • Directory is a naming service that stores objects with attributes. – Usernames and passwords etc stored in attrs. • Tree like structure JNDI 7 (c)CDAC(Formerly NCST)
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 8 (c)CDAC(Formerly NCST)
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. (c)CDAC(Formerly NCST) JNDI 9
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 10 (c)CDAC(Formerly NCST)
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 11 (c)CDAC(Formerly NCST)
Naming System and Namespaces • Naming system: A connected set of contexts. • Namespace: all the names contained within that naming system. JNDI 12 (c)CDAC(Formerly NCST)
Initial. Context • Starting point for exploring a namespace. • Starting point for performing all naming and directory operations. JNDI 13 (c)CDAC(Formerly NCST)
Issues • Many naming and directory products. – Netscape Directory Server – Microsoft. Active. Directory • 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) – Novell’s Network Directory System (NDS) • Every. DS has it’s own. API. JNDI 14 (c)CDAC(Formerly NCST)
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 15 (c)CDAC(Formerly NCST)
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 16 (c)CDAC(Formerly NCST)
JNDI 17 (c)CDAC(Formerly NCST)
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 18 (c)CDAC(Formerly NCST)
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 v 3 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 19 (c)CDAC(Formerly NCST)
Initial. Context. Factory • 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 J 2 EE server – The port number that the J 2 EE server accepts – Any username/password necessary to use the J 2 EE server. JNDI 20 (c)CDAC(Formerly NCST)
javax. naming. Context ctx = new javax. naming. Initial. Context (System. get. Properties()); java -Djava. naming. factory. initial= com. sun. jndi. fscontext. Ref. FSContext. Factory -Djava. naming. provider. url= file: c: examples. Init. Ctx class of the JNDI driver • provider URL: URL that the service provider accepts for bootstrapping. JNDI 21 (c)CDAC(Formerly NCST)
Other JNDI operations Methods invoked on a Context • list() - 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 java. io. File JNDI 22 (c)CDAC(Formerly NCST)
• rename() - give a new name to a context – c: temp to c: tmp • create. Subcontext() - create a subcontext at the context – c: foobar at the folder c: foo. • destroy. Subcontext() - destroy a subcontext of the context – Destroy c: foobar from the folder c: foo. • bind() – associates a name to a content and stores it at the Context – JNDI drivers accept different parameters to JNDIbind() 23 (c)CDAC(Formerly NCST)
Binding import javax. naming. *; public class Startup { public static void main(String args[]) throws Exception { Account. Impl acct_impl = new Account. Impl(); Context ctx = new Initial. Context (System. get. Properties()); ctx. rebind(“myname", acct_impl); } } JNDI 24 (c)CDAC(Formerly NCST)
Looking Up import javax. naming. *; import java. rmi. *; public class Client { public static void main (String[] args) throws Exception { Context ctx = new Initial. Context (System. get. Properties()); Object remote. Object = ctx. lookup(“myname"); Account account = (Account) javax. rmi. Portable. Remote. Object. narrow ( remote. Object, Account. class); int b = account. method 1(5)); }} JNDI 25 (c)CDAC(Formerly NCST)
Role of JNDI in J 2 EE • J 2 EE servers have a JNDI implementation. • Used to Look up beans. • Connect to resource factories – JDBC Data. Source – Java Message Service (JMS) drivers • Acquiring a reference to the Java Transaction API’s (JTA) User. Transaction interface. JNDI 26 (c)CDAC(Formerly NCST)
References • Mastering Enterprise Java. Beans by Ed Roman et. al. (Wiley) • JNDI Tutorial on java. sun. com • Java Server Programming J 2 EE Edition – Volume 1 – Wrox. • Java Enterprise in a nutshell – David Flanagan et. Al. – O’reilly JNDI 27 (c)CDAC(Formerly NCST)
Q&A


