Java Naming and Directory Interface
Trang 1thangld@uit.edu.vn
Java Naming and Directory Interface
Trang 2Java Naming and Directory Interface 2
Trang 3JNDI
Trang 4Java Naming and Directory Interface 4
Trang 5 JNDI cung cấp một giao tiếp chuẩn thống nhất cho các ứng dụng Java truy cập các dịch vụ tên
và thư mục
Cung cấp giao tiếp chung cho các hệ thống
naming/directory khác nhau: API chung cho
LDAP, NIS, …
Được sử dụng để thực hiện các thao tác trên hệ thống naming/directory Ví dụ: định vị các thực thể: Users, Machines, Objects, Services (JDBC Data source, JMS), …
Trang 6Java Naming and Directory Interface 6
Dịch vụ Naming
Dịch vụ Naming thực hiện các thao tác:
Một số dịch vụ Naming
DNS
Trang 7Dịch vụ Directory
Đối tượng directory bao gồm nhiều thuộc tính
Cho phép truy vấn các thuộc tính của một đối
tượng Directory và tìm kiếm đối tượng dựa trên tập thuộc tính
Một số dịch vụ Directory
for Solaris
Trang 8Kiến trúc JNDI
Trang 9Kiến trúc JNDI
Trang 10Java Naming and Directory Interface 10
Kiến trúc JNDI
Application Programming Interface (API)
naming/directory
Service Provider Interface (SPI)
truy xuất dịch vụ naming/directory
Trang 11Naming System
Naming System: là hệ thống liên kết các context
Namespace: chứa tất cả các tên trong hệ thống Naming System đó
Trang 12InitialContext
Trang 13 Vị trí bắt đầu để truy xuất một namespace
Vị trí bắt đầu để thực hiện tất cả các thao tác
trên naming và directory
Để có thể định vị sử dụng một InitialContext, cần cung cấp một số thông tin JNDI
với các dịch vụ naming/directory cần chứng thực
Trang 14Java Naming and Directory Interface 14
InitialContext: Java Code
Properties props = new Properties();
Trang 15InitialContext: File jndi.properties
java.naming.factory.initial=
com.sun.enterprise.naming.SerialInitContextFactory java.naming.factory.url.pkgs=com.sun.enterprise.naming
java.naming.factory.state=
com.sun.corba.ee.impl.presentation.rmi.
JNDIStateFactoryImpl
Trang 16Java Naming and Directory Interface 16
InitialContext: Java Parameters
#java
-Djava.naming.factory.initial=
com.sun.enterprise.naming.SerialInitContextFactory -Djava.naming.provider.url=jnp://193.205.194.162:1099
-Djava.naming.factory.url.pkgs=com.sun.enterprise.naming -Djava.naming.factory.state=
com.sun.corba.ee.impl.presentation.rmi.
JNDIStateFactoryImpl
<file.class>
Trang 17Lập trình với JNDI
Trang 18Java Naming and Directory Interface 18
Các thao tác trên JNDI context
Trang 19JNDI name
Giống như một URL
java:comp/env Configuration environment
java:comp/env/jdbc JDBC DataSource pools
java:comp/env/ejb EJB remote home interfaces
java:comp/env/jms JMS connection factories
Hoặc có thể có dạng khác như:
rmi://localhost:1099 RMI Registry
Trang 20Java Naming and Directory Interface 20
Trang 21JNDI và JDBC
JDBC Data source
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("jdbc/mysqlDS"); Connection conn =
ds.getConnection(“username”, “password”);
conn.close();
Trang 22Java Naming and Directory Interface 22
JNDI và Enterprise JavaBean
Context context = new InitialContext();
PhoneBookRemote myPhonebookLocal =
(PhoneBookRemote)context.lookup(
"sample.ejb.PhoneBookRemote"); PhoneBook phonebook =
myPhonebookLocal.findByPrimaryKey(name);
Trang 23JNDI & JavaEE
Trang 24Java Naming and Directory Interface 24
JNDI trong J2EE/JavaEE
Các J2EE/JavaEE servers đều cài đặt JNDI
Hỗ trợ:
Trang 25Q&A