站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
JNDI
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
[[Image:jndi.jpg|right|250px|thumb|JNDI的绑定]] '''JNDI'''(Java Naming and Directory Interface,[[Java]]命名和目录接口)是一组在Java应用中访问命名和目录服务的[[API]]。命名服务将名称和对象联系起来,使得可以用名称访问[[对象]]。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。 ==JNDI简介== #JNDI(Java Naming and Directory Interface)是[[SUN]]公司提供的一种标准的Java命名系统接口,JNDI提供统一的[[客户端]]API,通过不同的访问提供者接口JNDI [[SPI]]的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java[[应用程序]]可以和这些命名服务和目录服务之间进行交互。 #集群JNDI实现了高可靠性JNDI,通过[[服务器]]的集群,保证了JNDI的负载平衡和错误恢复。 #在全局共享的方式下,集群中的一个应用服务器保证本地JNDI树的独立性,并拥有全局的JNDI树。 #每个应用服务器在把部署的服务对象绑定到自己本地的JNDI树的同时,还绑定到一个共享的全局JNDI树,实现全局JNDI和自身JNDI的联系。 #JNDI(Java Naming and Directory Interface)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。 #JNDI可访问的现有的目录及服务有: <div style="-moz-column-count:3; column-count:3;" class=sclist> *DNS *XNam *Novell目录服务 *LDAP(轻型目录访问协议) *CORBA对象服务 *文件系统 *Windows XP/2000/NT/Me/9x的注册表 *RMI *DSML v1&v2 *NIS </div> ==JNDI的优点== *包含了大量的命名和目录服务,使用通用接口来访问不同种类的服务; *可以同时连接到多个命名或目录服务上; *建立起逻辑关联,允许把名称同Java对象或资源关联起来,而不必知道对象或资源的物理[[ID]]。 *JNDI程序包: #javax.naming:命名操作; #javax.naming.directory:目录操作; #javax.naming.event:在命名目录服务器中请求事件通知; #javax.naming.ldap:提供[[LDAP]]支持; #javax.naming.spi:允许动态插入不同实现。 *利用JNDI的命名与服务功能来满足企业级API对命名与服务的访问,诸如EJB、[[JMS]]、JDBC 2.0以及IIOP上的RMI通过JNDI来使用CORBA的命名服务。 ==JNDI与JDBC== *JNDI提供了一种统一的方式,可以用在[[网络]]上查找和访问服务。通过指定一个资源名称,该名称对应于[[数据库]]或命名服务中的一个记录,同时返回数据库连接建立所必须的信息。 *JNDI主要有两部分组成:应用程序编辑接口和服务供应商接口。应用程序[[编程]]接口提供了Java应用程序访问各种命名和目录服务的功能,服务供应商接口提供了任意一种服务的供应商使用的功能。 *代码示例: <pre> try{ Context cntxt = new InitialContext(); DataSource ds = (DataSource) cntxt.lookup("jdbc/dpt"); } catch(NamingException ne){ ... } </pre> == JNDI与JMS == *消息通信是软件组件或应用程序用来通信的一种方法。JMS就是一种允许应用程序创建、发送、接收、和读取消息的JAVA技术。 *代码示例: <pre> try{ Properties env = new Properties(); InitialContext inictxt = new InitialContext(env); TopicConnectionFactory connFactory = (TopicConnectionFactory) inictxt.lookup("TTopicConnectionFactory"); ... } catch(NamingException ne){ ... } </pre> *访问特定目录:举个例子,人是个对象,他有好几个属性,诸如这个人的姓名、电话号码、[[电子邮件]]地址、邮政编码等属性。通过getAttributes()方法 <pre> Attribute attr = directory.getAttributes(personName).get("email"); String email = (String)attr.get(); </pre> *通过使用JNDI让客户使用对象的名称或属性来查找对象: foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls); *通过使用JNDI来查找诸如打印机、数据库这样的对象,查找打印机的例子: <pre> Printer printer = (Printer)namespace.lookup(printerName); printer.print(document); </pre> *浏览命名空间: <pre> NamingEnumeration list = namespace.list("o=Widget, c=US"); while (list.hasMore()) { NameClassPair entry = (NameClassPair)list.next(); display(entry.getName(), entry.getClassName()); } </pre> == JNDI的常用操作 == *void bind(String sName,Object object);――绑定:把名称同对象关联的过程 *void rebind(String sName,Object object);――重新绑定:用来把对象同一个已经存在的名称重新绑定 *void unbind(String sName);――释放:用来把对象从目录中释放出来 *Object lookup(String sName);――查找:返回目录中的一个对象 *void rename(String sOldName,String sNewName);――重命名:用来修改对象名称绑定的名称 *NamingEnumeration listBinding(String sName);――清单:返回绑定在特定上下文中对象的清单列表 *NamingEnumeration list(String sName); 代码示例:重新得到了名称、类名和绑定对象。 <pre> NamingEnumeration namEnumList = ctxt.listBinding("cntxtName"); ... while ( namEnumList.hasMore() ) { Binding bnd = (Binding) namEnumList.next(); String sObjName = bnd.getName(); String sClassName = bnd.getClassName(); SomeObject objLocal = (SomeObject) bnd.getObject(); } </pre> ==相关条目== [[ODBC]] | [[JDBC]] | [[OOP]] | [[JAVA]] | [[EJB]] | [[数据库]] | [[JSTL]] | [[JMX]] | [[RMI]] | [[WSDL]] ==参考来源== *http://www.hudong.com/wiki/JNDI *http://baike.soso.com/v7559348.htm?sp=SSTJNDI [[category:JAVA|J]] [[category:API|J]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)