Jndi là gì

JNDI là một trong những API được chỉ định trong technology Java, cung ứng chức năng viết tên và tlỗi mục cho các áp dụng được viết bởi ngôn ngữ thiết kế Java. Nó có phong cách thiết kế đặc trưng cho gốc rễ Java bởi mô hình đối tượng người sử dụng của Java. Sử dụng JNDI, các ứng dụng dựa trên công nghệ Java rất có thể lưu trữ cùng truy vấn xuất những đối tượng người sử dụng Java mang tên ở trong ngẫu nhiên các loại nào. Hình như, JNDI cung ứng các cách thức để thực hiện những hoạt động tlỗi kim chỉ nam chuẩn chỉnh, chẳng hạn như links các nằm trong tính với các đối tượng và tìm kiếm kiếm những đối tượng bằng những ở trong tính của chúng.

Bạn đang xem: Jndi là gì

JNDI cũng rất được quan niệm tự do cùng với bất kỳ Việc triển khai hình thức dịch vụ đánh tên hoặc thỏng mục cụ thể làm sao. Nó cho phép các vận dụng truy vấn các hình thức dịch vụ tlỗi mục, đánh tên cùng thư mục khác biệt, hoàn toàn có thể sử dụng API thông thường. Các nhà cung ứng hình thức dịch vụ viết tên và thư mục không giống nhau rất có thể được cắm ngay tắp lự mạch phía sau API tầm thường này. Như vậy chất nhận được những ứng dụng dựa vào công nghệ Java tận dụng tối đa lên tiếng trong vô số dịch vụ viết tên với thư mục hiện nay bao gồm, chẳng hạn như LDAPhường, NDS, DNS và NIS (YP), cũng giống như cho phép những áp dụng cùng lâu dài cùng với các khối hệ thống và phần mềm cũ.

Sử dụng JNDI làm cách thức, bạn cũng có thể thành lập những ứng dụng di động cầm tay cùng mạnh khỏe new, không chỉ có tận dụng mô hình đối tượng người tiêu dùng của Java bên cạnh đó được tích phù hợp giỏi cùng với môi trường mà bọn chúng được thực thi.

Kiến trúc JNDI

Kiến trúc JNDI bao gồm 1 API và một SPI (Serivce provider interface). Các áp dụng Java sử dụng JNDI API để áp dụng chức năng naming với directory. Lưu ý JNDI chỉ là một interface luật pháp những hàm được thực hiện chúng ta bắt buộc một JDNI provider thực thi các method được nó định nghĩa. SPI được cho phép họ linch hoạt sử dụng những JNDI prodiver nhỏng LDAP.., DNS, NIS etc.

*

Chúng ta cố một số trong những JNDI provider phổ biến:

Lightweight Directory Access Protocol (LDAP)Common Object Request Broker Architecture (CORBA) Common Object Services (COS) name serviceJava Remote Method Invocation (RMI) RegistryDomain Name Service (DNS)

Trường hợp thực hiện JNDI phổ biến

Trường đúng theo sử dụng thông dụng độc nhất vô nhị là thiết lập đội liên kết các đại lý dữ liệu bên trên máy chủ áp dụng Java EE. Bất kỳ ứng dụng làm sao được xúc tiến trên máy chủ đó đều rất có thể có quyền truy cập vào các liên kết bọn họ đề xuất bằng cách sử dụng tên JNDI Java:comp/env/FooBarPool cơ mà ko nên biết chi tiết về kết nối.

Xem thêm: Here You Go Nghĩa Là Gì ? Khi Nào Thì Có Thể Sử Dụng Cụm Từ Này

Điều này còn có một số trong những lợi thế:

Nếu chúng ta bao gồm trình trường đoản cú xúc tiến trong số đó những vận dụng dịch chuyển tự môi trường devl->int->test->prod, bạn cũng có thể áp dụng cùng tên JNDI trong những môi trường xung quanh và ẩn các đại lý tài liệu thực tiễn đang được áp dụng. Các ứng dụng không hẳn chuyển đổi Khi chúng dịch rời thân các môi trường.quý khách hàng rất có thể giảm tđọc con số tín đồ cần biết báo cáo singin để truy cập cửa hàng dữ liệu cung cấp. Chỉ máy chủ ứng dụng Java EE cần phải biết nếu khách hàng áp dụng JNDI.

Name Interface

Name objectName = new CompositeName("java:comp/env/jdbc");Name Interface cung cấp bề ngoài thống trị thương hiệu cùng cú pháp mang đến JNDI. Thành phần trước tiên vào chuỗi đứng trước vết / đại diện mang đến global context, theo vùng sau đại diện thay mặt cho các sub-nội dung.

import javax.naming.CompositeName;import javax.naming.InvalidNameException;import javax.naming.Name;import java.util.Enumeration;class Main public static void main(String[> args) throws InvalidNameException Name objectName = new CompositeName("java:comp/env/jdbc"); Enumeration elements = objectName.getAll(); while(elements.hasMoreElements()) System.out.println(elements.nextElement()); Output:

java:compenvjdbc

Context Interface

Context interface chưa các nằm trong tính của naming với directory service. Dưới đây là ví dụ context trong Spring.

SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder(); builder.activate();SimpleNamingContextBuildertrong Spring góp họ tạo thành một JNDI provider với tiếp đến khởi chạy vớiNamingManager.

JndiTemplate jndiTemplate = new JndiTemplate();ctx = (InitialContext) jndiTemplate.getContext();

Binding với Lookup

Sau Lúc khởi chế tạo thành công xuất sắc SimpleNamingContextBuilder, chúng ta có thể sử dụng nó để lưu trữ JDBC Datasource thông qua bind() method.

ds = new DriverManagerDataSource("jdbc:h2:mem:mydb");ctx.bind("java:comp/env/jdbc/datasource", ds);Sau khi đã binding Datasource thành công xuất sắc, chúng ta cũng có thể truy vấn xuất lại cùng với lookup

DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/datasource");Nguồn tham khảo