JNDI là một trong những API được chỉ định và hướng dẫn vào công nghệ Java, cung ứng tính năng khắc tên và thỏng mục cho các ứng dụng được viết bằng ngữ điệu lập trình sẵn Java. Nó được thiết kế quan trọng cho nền tảng Java bằng quy mô đối tượng của Java. Sử dụng JNDI, các áp dụng dựa vào technology Java rất có thể lưu trữ cùng truy tìm xuất những đối tượng Java mang tên thuộc bất kỳ loại làm sao. Ngoài ra, JNDI hỗ trợ các cách tiến hành nhằm tiến hành các hoạt động thư phương châm chuẩn chỉnh, chẳng hạn như links các trực thuộc tính với những đối tượng người sử dụng với tìm kiếm kiếm những đối tượng bằng các nằm trong tính của chúng.

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

JNDI cũng được khái niệm chủ quyền với bất kỳ câu hỏi thực hiện dịch vụ đặt tên hoặc thư mục rõ ràng nào. Nó có thể chấp nhận được những vận dụng truy cập các hình thức thư mục, đặt tên cùng tlỗi mục khác biệt, có thể sử dụng API tầm thường. Các đơn vị cung cấp các dịch vụ khắc tên cùng thỏng mục khác biệt hoàn toàn có thể được cắm tức thời mạch đằng sau API chung này. Như vậy chất nhận được các vận dụng dựa trên technology Java tận dụng đọc tin trong vô số các dịch vụ viết tên và tlỗi mục hiện có, ví dụ như LDAPhường, NDS, DNS với NIS (YP), cũng giống như có thể chấp nhận được những áp dụng thuộc trường tồn cùng với các khối hệ thống với phần mềm cũ.

Sử dụng JNDI làm cho vẻ ngoài, chúng ta có thể gây ra những áp dụng di động với mạnh khỏe new, không chỉ là tận dụng mô hình đối tượng người sử dụng của Java ngoài ra được tích hợp giỏi cùng với môi trường xung quanh nhưng chúng được thực thi.

Kiến trúc JNDI

Kiến trúc JNDI bao gồm 1 API với một SPI (Serivce provider interface). Các áp dụng Java sử dụng JNDI API để thực hiện tác dụng naming cùng directory. Lưu ý JNDI chỉ là 1 interface phương tiện các hàm được thực hiện họ đề xuất một JDNI provider xúc tiến các method được nó tư tưởng. SPI cho phép họ linh hoạt sử dụng các JNDI prodiver nhỏng LDAP, DNS, NIS etc.

*
*

Chúng ta cố gắng một vài 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 vừa lòng sử dụng JNDI phổ biến

Trường thích hợp áp dụng thông dụng tốt nhất là tùy chỉnh cấu hình team kết nối các đại lý dữ liệu trên sever ứng dụng Java EE. Bất kỳ ứng dụng làm sao được triển khai bên trên sever đó đều hoàn toàn có thể có quyền truy cập vào những liên kết bọn họ cần bằng cách áp dụng thương hiệu JNDI Java:comp/env/FooBarPool nhưng mà ko cần phải biết cụ thể về liên kết.

Xem thêm:

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

Nếu bạn tất cả trình trường đoản cú tiến hành trong số ấy những vận dụng dịch chuyển từ bỏ 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 cùng ẩn các đại lý tài liệu thực tế đang rất được áp dụng. Các vận dụng chưa phải thay đổi khi chúng di chuyển giữa những môi trường.Quý khách hàng có thể giảm tphát âm số lượng fan cần phải biết thông tin đăng nhập để truy cập cửa hàng tài liệu cấp dưỡng. Chỉ máy chủ ứng dụng Java EE cần biết nếu bạn áp dụng JNDI.

Name Interface

Name objectName = new CompositeName("java:comp/env/jdbc");Name Interface cung cấp cơ chế thống trị thương hiệu và cú pháp mang lại JNDI. Thành phần trước tiên vào chuỗi đứng trước vệt / đại diện thay mặt cho global context, theo phía sau đại diện 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 không các ở 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();SimpleNamingContextBuildervào Spring giúp chúng ta tạo nên một JNDI provider cùng sau đó khởi chạy vớiNamingManager.

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

Binding với Lookup

Sau Khi khởi tạo nên thành công xuất sắc SimpleNamingContextBuilder, chúng ta có thể sử dụng nó nhằm tàng trữ JDBC Datasource trải qua bind() method.

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

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

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *