JNDI

1.什麼是JNDI?

(1)JNDI的全稱是Java Naming and Directory Interface(Java命名和目錄接口)。

(2)它是一組在Java應用中訪問命名和目錄服務的API。

(3)通過名稱將資源與服務進行關聯

2.JNDI的作用

JNDI避免了程序與數據庫之間的緊耦合,使應用更加易於配置、易於部署。


有了JNDI之後,程序員在開發項目時,在J2EE容器中配置JNDI參數,定義一個數據源,也就是JDBC引用參數,給這個數據源設置一個名稱;然後,在程序中,通過數據源名稱引用數據源從而訪問後臺數據庫。那麼程序就可以不用具體關心JDBC的參數了。

3.JNDI的優點

(1)包含了大量的命名和目錄服務,使用通用接口來訪問不同種類的服務

(2)可以同時連接到多個命名或目錄服務上

(3)建立起邏輯關聯,允許把名稱同Java對象或資源關聯起來,而不必指導對象或資源的物理ID


Tomcat JNDI:可以參考Tomcat的文檔學習

Windows JNDI:要先導兩個jar包(Windows文件目錄服務包)到項目的lib裏面

<1>獲取Window某個目錄下所有的文件  context.list("");
<2>讀取某一個文件  context.lookup("fileName");

具體代碼:

package com.zking.test;


import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.Hashtable;


import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NameClassPair;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;


public class TestWindowsJNDI {
public static void main(String[] args) {
Hashtable<String,String> environment=new Hashtable<String, String>();
//1.windows 中有一個工廠
environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
//2.執行目錄(細節:加協議 file:///)
environment.put(Context.PROVIDER_URL, "file:///C:\\Windows");
//獲取某個文件夾下所有的文件和文件夾
try {
Context context=new InitialContext(environment);

// File file=(File) context.lookup("WindowsUpdate.log");
// BufferedReader br=new BufferedReader(new FileReader(file));
// String str=null;
// while((str=br.readLine())!=null){
// System.out.println(str);
// }
NamingEnumeration<NameClassPair>  namingEnumeration=context.list("");
int i=0;
while(namingEnumeration.hasMore()){
i++;
NameClassPair nameClassPair=namingEnumeration.next();
System.out.println(nameClassPair.getName()+":"+nameClassPair.getClassName());
}
System.out.println(i);
} catch (Exception e) {
e.printStackTrace();
}
}
}


自定義JNDI

<1>將對象寫入到自定義的JNDI中  context.bind();

<2>在自定義的JNDI中,刪除某一個對象 context.unbind();

<3>在自定義的JNDI中獲取某一個對象 context.lookup();

<4>從自定義的JNDI中獲取所有對象  context.list();

發佈了41 篇原創文章 · 獲贊 1 · 訪問量 6765
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章