亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JSP > 正文

基于JNDI的應用程序開發

2020-07-27 21:45:40
字體:
來源:轉載
供稿:網友
JNDI(The Java Naming and Directory Interface,Java命名和目錄接口)是一組在Java應用中訪問命名和目錄服務的API。命名服務將名稱和對象聯系起來,使得我們可以用名稱訪問對象。目錄服務是一種命名服務,在這種服務里,對象不但有名稱,還有屬性。

  命名或目錄服務使你可以集中存儲共有信息,這一點在網絡應用中是重要的,因為這使得這樣的應用更協調、更容易管理。例如,可以將打印機設置存儲在目錄服務中,以便被與打印機有關的應用使用。

  本文用代碼示例的方式給出了一個快速教程,使你可以開始使用JNDI。它:

  1、提供了JNDI概述

  2、描述了JNDI的特點

  3、體驗了一下用JNDI開發應用

  4、表明了如何利用JNDI訪問LDAP服務器,例如,Sun ONE 目錄服務器

  5、表明了如何利用JNDI訪問J2EE服務

  6、提供了示例代碼,你可以將其改編為自己的應用

  JNDI概述

  我們大家每天都不知不覺地使用了命名服務。例如,當你在web瀏覽器輸入URL,http://java.sun.com時,DNS(Domain Name System,域名系統)將這個符號URL名轉換成通訊標識(IP地址)。命名系統中的對象可以是DNS記錄中的名稱、應用服務器中的EJB組件(Enterprise JavaBeans Component)、LDAP(Lightweight Directory Access Protocol)中的用戶Profile。

  目錄服務是命名服務的自然擴展。兩者之間的關鍵差別是目錄服務中對象可以有屬性(例如,用戶有email地址),而命名服務中對象沒有屬性。因此,在目錄服務中,你可以根據屬性搜索對象。JNDI允許你訪問文件系統中的文件,定位遠程RMI注冊的對象,訪問象LDAP這樣的目錄服務,定位網絡上的EJB組件。

  對于象LDAP 客戶端、應用launcher、類瀏覽器、網絡管理實用程序,甚至地址薄這樣的應用來說,JNDI是一個很好的選擇。

  JNDI架構

  JNDI架構提供了一組標準的獨立于命名系統的API,這些API構建在與命名系統有關的驅動之上。這一層有助于將應用與實際數據源分離,因此不管應用訪問的是LDAP、RMI、DNS、還是其他的目錄服務。換句話說,JNDI獨立于目錄服務的具體實現,只要你有目錄的服務提供接口(或驅動),你就可以使用目錄。如圖1所示。 圖1:JNDI架構

  關于JNDI要注意的重要一點是,它提供了應用編程接口(application programming interface,API)和服務提供者接口(service provider interface,SPI)。這一點的真正含義是,要讓你的應用與命名服務或目錄服務交互,必須有這個服務的JNDI服務提供者,這正是JNDI SPI發揮作用的地方。服務提供者基本上是一組類,這些類為各種具體的命名和目錄服務實現了JNDI接口―很象JDBC驅動為各種具體的數據庫系統實現了JDBC接口一樣。作為一個應用開發者,你不必操心JNDI SPI。你只需要確認你要使用的每一個命名或目錄服務都有服務提供者。

  J2SE和JNDI

  Java 2 SDK 1.3及以上的版本包含了JNDI。對于JDK 1.1和1.2也有一個標準的擴展。Java 2 SDK 1.4.x的最新版本包括了幾個增強和下面的命名/目錄服務提供者:

  1、LDAP(Lightweight Directory Access Protocol)服務提供者

  2、CORBA COS(Common Object Request Broker Architecture Common Object Services)命名服務提供者

  3、RMI(Java Remote Method Invocation)注冊服務提供者 l DNS(Domain Name System)服務提供者

  更多的服務提供者

  可以在如下網址找到可以下載的服務提供者列表:http://java.sun.com/products/jndi/serviceproviders.html 特別有意思的或許是如下網址提供的Windows 注冊表JNDI服務提供者:http://cogentlogic.com/cocoon/CogentLogicCorporation/JNDI.xml 這個服務提供者使你可以訪問Windows XP/2000/NT/Me/9x的windows注冊表。也可以在如下網址下載JNDI/LDAP Booster Pack:http://java.sun.com/products/jndi/ 這個Booster Pack包含了對流行的LDAP控制的支持和擴展。它代替了與LDAP 1.2.1服務提供者捆綁在一起的booster pack。關于控制和擴展的更多信息可以在如下網站看到: http://java.sun.com/products/jndi/tutorial/ldap/ext/index.html 另一個有趣的服務提供者是Sun的支持DSML v2.0(Directory Service Markup Language,目錄服務標記語言)的服務提供者。DSML的目的是在目錄服務和XML之間架起一座橋梁。

  JNDI API

  JNDI API由5個包組成:

  1、Javax.naming:包含了訪問命名服務的類和接口。例如,它定義了Context接口,這是命名服務執行查詢的入口。

  2、Javax.naming.directory:對命名包的擴充,提供了訪問目錄服務的類和接口。例如,它為屬性增加了新的類,提供了表示目錄上下文的DirContext接口,定義了檢查和更新目錄對象的屬性的方法。

  3、Javax.naming.event:提供了對訪問命名和目錄服務時的時間通知的支持。例如,定義了NamingEvent類,這個類用來表示命名/目錄服務產生的事件,定義了偵聽NamingEvents的NamingListener接口。

  4、Javax.naming.ldap:這個包提供了對LDAP 版本3擴充的操作和控制的支持,通用包javax.naming.directory沒有包含這些操作和控制。

  5、Javax.naming.spi:這個包提供了一個方法,通過javax.naming和有關包動態增加對訪問命名和目錄服務的支持。這個包是為有興趣創建服務提供者的開發者提供的。

  JNDI 上下文

  正如在前面提到的,命名服務將名稱和對象聯系起來。這種聯系稱之為綁定(binding)。一組這樣的綁定稱之為上下文(context),上下文提供了解析(即返回對象的查找操作)。其他操作包括:名稱的綁定和取消綁定,列出綁定的名稱。注意到一個上下文對象的名稱可以綁定到有同樣的命名約定的另一個上下文對象。這稱之為子上下文。例如,如果UNIX中目錄/home是一個上下文,那么相對于這個目錄的子目錄就是子上下文―例如,/home/guests中guests就是home的子上下文。在JNDI中,上下文用接口javax.naming.Context表示,這個接口是與命名服務交互的關鍵接口。在Context(或稍后討論的

  DirContext)接口中的每一個命名方法都有兩種重載形式:

  1、Lookup(String name):接受串名

  2、Lookup(javax.naming.Name):接受結構名,例如,CompositeName(跨越了多個命名系統的名稱)或CompondName(單個命名系統中的名稱);它們都實現了Name接口。Compound name的一個例子是:cn=mydir,cn=Q Mahmoud,ou=People,composite name的一個例子是:cn=mydir,cn=Q Mahmoud,ou=People/myfiles/max.txt(這里,myfiles/max.txt是表示第二部分的文件名) Javax.naming.InitialContext是實現了Context接口的類。用這個類作為命名服務的入口。為了創建InitialContext對象,構造器以java.util.Hashtable或者是其子類(例如,Properties)的形式設置一組屬性。下面給出了一個例子:

  Hashtable env = new Hashtable(); // select a service provider factory env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContext"); // create the initial context Context contxt = new InitialContext(env);

  INITIAL_CONTEXT_FACTORY指定了JNDI服務提供者中工廠類(factory class)的名稱。Factory負責為其服務創建適當的InitialContext對象。在上面的代碼片斷中,為文件系統服務提供者指定了工廠類。表1給出了所支持的服務提供者的工廠類。要注意的是文件系統服務提供者的工廠類需要從Sun公司單獨下載,J2SE 1.4.x沒有包含這些類。

  表1:上下文INITIAL_CONTEXT_FACTORY的值

  Name Service Provider Factory File System com.sun.jndi.fscontext.RefFSContextFactory LDAP com.sun.jndi.ldap.LdapCtxFactory RMI com.sun.jndi.rmi.registry.RegistryContextFactory CORBA com.sun.jndi.cosnaming.CNCtxFactory DNS com.sun.jndi.dns.DnsContextFactory

  為了用名稱從命名服務或目錄中取得或解析對象,使用Context的lookup方法:Object obj=contxt.lookup(name)。Lookup方法返回一個對象,這個對象表示的是你想要找的上下文的兒子。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精品久久久久久久| 精品偷拍一区二区三区在线看| 国产精品激情av电影在线观看| 欧美xxxx14xxxxx性爽| 久久精品视频导航| 亚洲无限乱码一二三四麻| 国产精品无码专区在线观看| 欧美整片在线观看| 在线精品国产成人综合| 色久欧美在线视频观看| 欧美有码在线视频| 38少妇精品导航| 深夜福利日韩在线看| 欧美激情第1页| 九九热最新视频//这里只有精品| 国产视频久久久久| 久久久精品国产亚洲| 精品magnet| 午夜精品福利电影| 欧美黑人性生活视频| 日韩av电影手机在线观看| 日韩免费av一区二区| 亚洲第一精品夜夜躁人人爽| 久久久久久亚洲精品中文字幕| 成人黄色影片在线| 日韩精品视频在线播放| 午夜剧场成人观在线视频免费观看| 国产精品视频内| 久青草国产97香蕉在线视频| 亚洲人成在线观看| 日韩亚洲欧美中文高清在线| 亚洲午夜未删减在线观看| 国产精品久久久久久av福利| 亚洲精品自拍第一页| 97免费在线视频| 日本午夜精品理论片a级appf发布| 久久久久国产一区二区三区| 不用播放器成人网| 国产免费成人av| 亚洲自拍中文字幕| 在线播放国产一区二区三区| 91中文在线观看| 久久99视频精品| 97在线视频国产| 国产精品日韩在线观看| 欧美日韩国产中字| 疯狂做受xxxx欧美肥白少妇| 日本久久久久亚洲中字幕| 国产精品免费网站| 日韩精品视频在线观看网址| 国产欧亚日韩视频| 亚洲国产中文字幕在线观看| 色综合91久久精品中文字幕| 欧美最猛性xxxx| 91美女片黄在线观| 一区二区欧美激情| 成人av电影天堂| 一本大道香蕉久在线播放29| 亚洲系列中文字幕| 亚洲精品免费在线视频| 中文字幕日韩欧美| 久久久久久中文字幕| 亚洲qvod图片区电影| 成人福利视频网| 国产日韩专区在线| 韩国19禁主播vip福利视频| 成人免费午夜电影| 国产一区二区三区视频免费| 久久久免费精品视频| 欧美精品成人在线| 亚洲最大成人免费视频| 中文字幕日本欧美| 欧美中文字幕第一页| 亚洲精品综合精品自拍| 欧美精品电影免费在线观看| 国产精品爽黄69天堂a| 亚洲精品成a人在线观看| 97国产成人精品视频| 粉嫩av一区二区三区免费野| 久久99久久亚洲国产| 国产精品久久久久久久久借妻| 亚洲一区二区自拍| 日韩av手机在线看| 国产精品中文在线| 国产日韩在线亚洲字幕中文| 日韩视频―中文字幕| 欧美日韩在线观看视频小说| 91久久精品国产| 久色乳综合思思在线视频| 亚洲精品小视频在线观看| 国产精品久久久久久久久久久久| 亚洲精品一区二区网址| 琪琪亚洲精品午夜在线| 色妞在线综合亚洲欧美| 日韩在线观看你懂的| 国产精品中文字幕久久久| 精品国产一区二区三区在线观看| 亚洲天堂一区二区三区| 欧美尺度大的性做爰视频| 精品调教chinesegay| 福利微拍一区二区| 91在线视频导航| 亚洲一区二区三区乱码aⅴ| 欧美黄色成人网| 精品久久久999| 国产精品久久久久999| 日韩美女免费线视频| 亚洲在线第一页| 亚洲精品久久久久久久久久久久| 国产有码在线一区二区视频| 亚洲美女www午夜| 日本免费一区二区三区视频观看| 欧美日韩国产在线播放| 日韩在线观看免费网站| 中文字幕不卡在线视频极品| 久久伊人精品一区二区三区| 久久91精品国产| 成人免费高清完整版在线观看| 91九色国产在线| 亚洲人成电影网站色…| 欧美怡红院视频一区二区三区| 尤物tv国产一区| 在线精品播放av| 992tv成人免费视频| 国产精品夜色7777狼人| 久久综合网hezyo| 欧美激情伊人电影| 欧美最猛性xxxxx(亚洲精品)| 国产精品免费看久久久香蕉| 国产亚洲精品美女久久久久| 国产成人91久久精品| 国产精品草莓在线免费观看| 国产精品扒开腿做爽爽爽视频| 91国产美女视频| 国产精品久久久久久久9999| 久久久久久久影院| 日韩av中文字幕在线| 日本欧美一级片| 久久免费精品视频| 日韩欧美在线视频免费观看| 亚洲精品美女久久久| 国产在线观看一区二区三区| 亚洲精品国产拍免费91在线| 欧美特级www| 久久网福利资源网站| 日韩精品极品视频免费观看| 国产精品电影观看| 国产成人精品视| 51午夜精品视频| 欧美亚洲激情在线| 欧美韩国理论所午夜片917电影| 91在线观看免费| 亚洲www永久成人夜色| 国产欧美日韩精品丝袜高跟鞋| 美女久久久久久久| 国产香蕉一区二区三区在线视频| 国产视频在线一区二区| 97色在线视频观看| 亚洲精品wwwww| 久久中文久久字幕| 亚洲精品视频播放| 国内伊人久久久久久网站视频| 欧美电影在线观看| 欧美精品xxx|