Jndi là gì

     

JNDI là 1 trong những API được hướng đẫn trong công nghệ Java, cung cấp tính năng đặt tên với thư mục cho các ứng dụng được viết bằng ngôn từ lập trình Java. Nó có phong cách thiết kế đặc biệt cho căn nguyên Java bằng mô hình đối tượng người sử dụng của Java. Thực hiện JNDI, các ứng dụng dựa trên technology Java hoàn toàn có thể lưu trữ với truy xuất các đối tượng người dùng Java mang tên thuộc ngẫu nhiên loại nào. Quanh đó ra, JNDI hỗ trợ các phương thức để triển khai các hoạt động thư mục tiêu chuẩn, chẳng hạn như liên kết những thuộc tính cùng với các đối tượng và kiếm tìm kiếm các đối tượng người sử dụng bằng các thuộc tính của chúng.

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

JNDI cũng được định nghĩa tự do với bất kỳ việc tiến hành dịch vụ đánh tên hoặc thư mục ví dụ nào. Nó chất nhận được các ứng dụng truy cập các thương mại & dịch vụ thư mục, đặt tên cùng thư mục khác nhau, rất có thể sử dụng API chung. Các nhà hỗ trợ dịch vụ để tên và thư mục khác nhau rất có thể được cắn liền mạch ẩn dưới API thông thường này. Điều này có thể chấp nhận được các áp dụng dựa trên công nghệ Java tận dụng thông tin trong tương đối nhiều dịch vụ đặt tên cùng thư mục hiện có, chẳng hạn như LDAP, NDS, DNS với NIS (YP), cũng như chất nhận được các áp dụng cùng tồn tại với các hệ thống và phần mềm cũ.

Sử dụng JNDI làm công cụ, bạn cũng có thể xây dựng các ứng dụng di động cầm tay và trẻ trung và tràn đầy năng lượng mới, không chỉ có tận dụng tế bào hình đối tượng người sử dụng của Java ngoại giả được tích hợp giỏi với môi trường thiên nhiên mà bọn chúng được triển khai.

Kiến trúc JNDI

Kiến trúc JNDI bao gồm một API và một SPI (Serivce provider interface). Những ứng dụng Java thực hiện JNDI API để sử dụng công dụng naming và directory. Lưu ý JNDI chỉ là 1 trong những interface quy định những hàm được sử dụng họ cần một JDNI provider triển khai những method được nó định nghĩa. SPI mang lại phép họ linh hoạt sử dụng các JNDI prodiver như LDAP, DNS, NIS etc.

*
*

Chúng ta cố một 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 hòa hợp sử dụng thịnh hành nhất là thiết lập cấu hình nhóm liên kết cơ sở dữ liệu trên máy chủ ứng dụng Java EE. Ngẫu nhiên ứng dụng làm sao được triển khai trên sever đó đều rất có thể có quyền truy cập vào những kết nối bọn họ cần bằng phương pháp sử dụng thương hiệu JNDI Java:comp/env/FooBarPool mà không cần phải biết chi ngày tiết về kết nối.

Xem thêm: Nhạc Cho Trẻ Sơ Sinh Vui Nhộn Nhạc Cho Bé 2, Cho Bé Nghe Nhạc Từ 0

Điều này có một vài lợi thế:

Nếu bạn có trình tự triển khai trong các số ấy các ứng dụng dịch rời từ môi trường devl->int->test->prod, bạn có thể sử dụng thuộc tên JNDI trong mỗi môi trường và ẩn cơ sở dữ liệu thực tế đang được sử dụng. Các ứng dụng ko phải thay đổi khi chúng di chuyển giữa các môi trường.Bạn có thể giảm thiểu số lượng người cần biết thông tin đăng nhập để truy vấn cơ sở dữ liệu sản xuất. Chỉ sever ứng dụng Java EE cần phải biết nếu bạn thực hiện JNDI.

Name Interface

Name objectName = new CompositeName("java:comp/env/jdbc");Name Interface cung ứng cơ chế quản lý tên cùng cú pháp đến JNDI. Thành phần đầu tiên trong chuỗi đứng trước vệt / thay mặt cho global context, theo phía sau thay mặt cho những sub-content.

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 thuộc tính của naming cùng directory service. Dưới đó là ví dụ context vào Spring.

SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder(); builder.activate();SimpleNamingContextBuildertrong Spring giúp bọn họ tạo một JNDI provider và tiếp nối khởi chạy vớiNamingManager.

Xem thêm: Game Dàn Trận Hay Nhất Mọi Thời Đại, Top 10 Game Dàn Trận Pc Hay Nhất Không Nên Bỏ Lỡ

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

Binding và Lookup

Sau khi khởi 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 vẫn binding Datasource thành công, chúng ta cũng có thể truy xuất lại cùng với lookup

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