Java技术回顾之JNDI--JNDI API

JNDI的用途:

1)你可以用jndi来得到object类的属性

Attribute attr =directory.getAttributes(personName).get("email");
String email = (String)attr.get();

2)你可以用jndi来搜索对象
foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls);
查找谁的名字叫Fox在wiz部门的员工?

3)你可以用jndi通过naming/directory服务查询像printers和databases的对象
如:查询 Printer
Printer printer = (Printer)namespace.lookup(printerName);
printer.print(document);


4)你可以用jndi列表出命名空间的特殊级别的内容

NamingEnumeration list = namespace.list("o=Widget, c=US");
while (list.hasMore()) {
NameClassPair entry = (NameClassPair)list.next();
display(entry.getName(), entry.getClassName());
} 

JNDI API包含以下5个package:
javax.naming
javax.naming.directory
javax.naming.event
javax.naming.ldap
javax.naming.spi
其中前面4个package定义了JNDI客户端接口,面向使用命名和目录服务的应用

最后的javax.naming.spi定义了JNDI服务提供者接口(SPI),面向不同的命名和目录服务提供者。  

命名服务主要API javax.naming

1、Context接口和InitialContext类
Context是命名服务的核心接口,提供对象查找,绑定/解除绑定,重命名对象,创建和销毁子上下文等操作。
InitialContext类实现了Context接口,是访问命名服务的起始上下文,通过它可查找对象和子上下文。

Object lookup(Name name)
Object lookup(String name)
根据名称获取对象 
void bind(Name name, Object obj)
void bind(String name, Object obj)
绑定名称到对象 
void unbind(Name name)
void unbind(String name)
解除绑定,释放对象 
void rebind(Name name, Object obj)
void rebind(String name, Object obj)
将对象和一个已经存在的名称重新绑定 
void rename(Name oldName, Name newName)
void rename(String oldName, String newName)
修改对象名称 
NamingEnumeration<NameClassPair> list(Name name)
NamingEnumeration<NameClassPair> list(String name)
列出上下文中的所有对象名称信息。NameClassPair包含对象名称和对象类名。
NamingEnumeration<Binding> listBindings(Name name)
NamingEnumeration<Binding> listBindings(String name)
列出上下文中的所有绑定。
Context createSubcontext(Name name)
Context createSubcontext(String name)
创建子上下文 
void destroySubcontext(Name name)
void destroySubcontext(String name)
销毁子上下文 

2、Name接口

对应于命名服务概念中的对象名称。它的具体实现可能是一个简单的字符串,也可能是一个复杂对象。CompoundName类和CompositeName类均实现了Name接口,分别代表复合名称和混合名称。

3、Binding类
对应于命名服务概念中的绑定。一个Binding包含对象名称,对象的类名称,对象本身。

String getName()
void setName(String name)
获取/设置对象名称 
String getClassName()
setClassName(String name)
获取/设置对象类名
Object getObject()
void setObject(Object obj)
获取/设置对象 

4、Referenceable接口和Reference类
命名服务中对象的存储方式各不相同。有的将对象直接序列化,这时实现标准的Serializable接口接口。有的要将对象存储在命名系统外部,这就要用到Referenceable接口和Reference类了。Reference类包含了怎样构造出一个实际对象的信息,实际对象则需要实现Referenceable接口。
Referenceable主要方法:
Reference getReference() 返回对象的引用。
当将一个实现了Referenceable接口的对象绑定到Context时,实际上通过getReference()得到它的Reference进行绑定。而如何从Reference中创建出Referenceable实例,则由具体的SPI实现,JNDI客户不用关心。  



目录服务主要API javax.naming.directory

1、DirContext接口和InitialDirContext类
DirContext是目录服务的核心接口,它扩展了Context接口,除了提供了命名服务的各种操作外,还提供了访问和更新目录对象属性的操作,以及Search操作。
InitialDirContext类扩展InitialContext类并实现了DirContext接口,是访问目录服务的起始点。
DirContext主要方法:
binding/rebing/unbinding等方法与Context类似,区别是各个方法中均添加了Attributes参数,表示绑定的是一个目录对象,其中有对象本身,还有对象的属性集合。这里不再列举。

Attributes getAttributes(Name name)
获取对象的属性集合 
void modifyAttributes(Name name, int mod_op, Attributes attrs)
修改对象的属性集合 
NamingEnumeration<SearchResult> search(Name name, Attributes matchingAttributes)
搜索包含匹配的属性的对象。
NamingEnumeration<SearchResult> search(Name name, String filter, SearchControls cons)
通过查询过滤条件进行搜索,同时指定了搜索控制。 

2、Attribute接口和Attributes接口
Attribute接口对应于目录服务概念中的属性。Attributes表示属性的集合。

3、SearchResult类和SearchControls类
SearchResult类继承自Binding类,表示DirContext的search操作的结果。SearchControls类用于对搜索操作进行更精细的控制,如指定搜索范围(Scope),时间限制(TimeLimit)和结果数量限制(CountLimit)。

命名和目录服务事件API javax.naming.event

1、EventContext接口和EventDirContext接口
分别表示支持事件通知的上下文,提供了添加和删除事件监听器的操作。

2、NamingEvent类
命名和目录服务产生的事件。包含一个type表示不同的事件类型。

3、NamingListener/NamespaceChangeListener/ObjectChangeListener
NamingListener是处理NamingEvent事件监听器的接口,NamespaceChangeListener和ObjectChangeListener是它的两个子接口,分别定义了各自感兴趣的NamingEvent事件类型的处理方法。





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497876.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

遗传算法pareto matlab,matlab遗传算法三目标优化,出来的pareto前沿图只是二维图...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼三目标不是三维图么&#xff1f;怎么修改啊&#xff1f;啊function fmultidisk(x)global I1 I2 Fr350;u0.5;fai1;W3400;v44.4444;m4; tc6.5; Dh75;WaW*m;g9.8;Dmax300;Tmax260;Ti35; Pmax3;P0max7;J4180;c0.113;rou7.8*10^(-6);EWa…

深度学习发展简要笔记

来源&#xff1a;非正式组织概要&#xff1a;在Yann LeCun、Yoshua Bengio和Geoffrey Hinton三巨头nature深度学习综述《deep learning》文章中提到&#xff0c;这段期间神经网络模型被主流的计算机视觉和学术界所抛弃。一、前言深度学习的发展大致分为这么几个学期&#xff1a…

利用ServiceLocator模式改进JNDI实践

J2EE应用系统是打了“分布式”的标签的&#xff0c;所以客户端需要定位业务层的组件和服务&#xff0c;常见的比如有&#xff1a;EJB Home接口、EJB LocalHome接口、JMS消息列队或主题、JMS消息列队工厂等等&#xff0c;当然还有再普通不过的JAVA对象了&#xff0c;那么对这些分…

数据革命在危机中诞生 援助组织尝试灵活方法拨开战争迷雾

无国界医生组织在安曼为叙利亚提供支持。图片来源&#xff1a;Neil Brandvold来源&#xff1a;科学网概要&#xff1a;每当战争、飓风或其他灾害肆虐时&#xff0c;援助组织面临的最大问题之一就是缺乏可靠的数据。当Issam Salim&#xff08;化名&#xff09;讲述他进行的手术时…

德勤2018TMT八大预测:移动互联网迎来二次革命

来源&#xff1a;智东西概要&#xff1a;数万手机AR应用上市&#xff0c;AI芯片打入旗舰手机&#xff0c;数据中心ML芯片多样化&#xff0c;移动数字经济继续开挂。2017年&#xff0c;很多传统TMT巨头面临增长缓趋&#xff0c;于是考虑重资产化追求规模效应&#xff0c;开拓、转…

oracle 中 start tran,The value (30) of MAXTRANS parameter ignored

The value (30) of MAXTRANS parameter ignored在客户的数据库系统中(Oracle 10.2.0.3)&#xff0c;当使用expdp备份时就出现如下错误&#xff0c;非常准时。可以看到&#xff0c;这个错误就是由于备份时创建备份主表(Master Table)产生的&#xff1a;Sat Mar 7 02:40:01 2009T…

JNDI概述

JNDI是 Java 命名与目录接口&#xff08;Java Naming and Directory Interface&#xff09;&#xff0c;在J2EE规范中是重要的规范之一&#xff0c;不少专家认为&#xff0c;没有透彻理解JNDI的意义和作用&#xff0c;就没有真正掌握J2EE特别是EJB的知识。那么&#xff0c;JNDI…

北京出台自动驾驶新规:自动驾驶车辆须配备司机应急

来源&#xff1a;人民日报概要&#xff1a;在中国境内注册的独立法人单位&#xff0c;因进行自动驾驶相关科研、定型试验&#xff0c;可申请临时上路行驶。记者今天从北京市交通委获悉&#xff0c;北京市交通委联合市公安交管局、市经济信息委等部门&#xff0c;制定发布了加快…

oracle简单序列,-30天下载

如何使用Oracle序列&#xff1a;Oracle序列(sequence)是一种数据库项&#xff0c;能够生成一个整数序列。通常用于填充数字类型的主键列。1、创建序列&#xff1a;CREATE SEQUENCE sequence_name[START WITH start_num][INCREMENT BY increment_num][{MAXVALUE maximum_num|NOM…

JNDI配置原理详解

最近写书&#xff0c;写到JNDI&#xff0c;到处查资料&#xff0c;发现所有的中文资料都对JNDI解释一通&#xff0c;配置代码也是copy的&#xff0c;调了半天也没调通&#xff0c;最后到SUN的网站参考了一下他的JNDI tutorial&#xff0c;终于基本上彻底明白了和多数java服务一…

【未来研究】城市云脑是互联网云脑的节点,城市云脑之间如何互补与支撑

作者: 互联网进化论作者 &#xff0c;计算机博士 刘锋前言&#xff1a;本文是未来智能实验室的研究文章&#xff0c;重点探讨了基于类脑架构的智慧城市建设不应局限在城市内部&#xff0c;而是在互联网大背景下&#xff0c;不同城市之间也会发生智慧建设的协同效应。本文从城市…

oracle 数据掩码,oracle格式掩码

to char 是把日期或数字转换为字符串to date 是把字符串转换为数据库中得日期类型? 转换函数? TO_CHAR使用TO_CHAR函数处理数字TO_CHAR(number, 格式)TO_CHAR(salary,’$99,999.99’);使用TO_CHAR函数处理日期TO_CHAR(date,’格式’);? TO_NUMBER使用TO_NUMBER函数将字符转换…

JNDI全攻略

名词解释jndi是Java 命名和目录接口&#xff08;Java Naming and Directory Interface&#xff0c;JNDI&#xff09;的简称.从一开始就一直是 Java 2 平台企业版&#xff08;JEE&#xff09;的核心技术之一。在JMS&#xff0c;JMail,JDBC,EJB等技术中&#xff0c;就大量应用的这…

北京大学纳家勇治研究组在《美国国家科学院院刊》发文阐明时序记忆的神经机制

来源&#xff1a; 北京大学心理与认知科学学院官网概要&#xff1a;记忆是核心认知功能之一&#xff0c;使得人和动物能够根据经验改变自己的行为模式。近日&#xff0c;《美国国家科学院院刊》&#xff08;Proceedings of the National Academy of Sciences of the United Sta…

oracle nvl2函数延伸,Oracle中replace、translate、nvl2 函数详解

简要比较&#xff1a;replace&#xff1a;字符串级别的代替如&#xff1a;SELECT REPLACE(acdd,cd,ef) FROM dual; →aefdtranslate&#xff1a;字符级别的代替如&#xff1a;SELECT TRANSLATE(acdd,cd,ef) FROM dual; →aeff分别详解&#xff1a;replace:语法&#xff1a;REPL…

管道( Pipeline )模型--示例

类图 时序图 阀门接口 /*** 阀门接口* author administrator**/ public interface Valve {public String getName();public void invoke( Context context ); }基本阀门 /*** 基础阀门* author administrator**/ public class BasicValve implements Valve{private String name…

一文告诉你,NIPS 2017有多火爆 | 附PPT、视频、代码大总结

原文来源&#xff1a;Medium、GitHub作者&#xff1a;TarasSereda「雷克世界」编译&#xff1a;嗯~阿童木呀、KABUDA今年的NIPS是一场盛大的、极富教育意义和探索精神的、魅力十足且人数众多的会议。第一步&#xff0c;登记排队量子计算机Tutorials深度学习&#xff1a;实践与趋…

不入oracle数据库,Oracle数据库之操作符及函数

一、操作符&#xff1a;1、分类&#xff1a;算术、比较、逻辑、集合、连接&#xff1b;2、算术操作符&#xff1a;执行数值计算&#xff1b;--工资加1000select empno,ename,job,sal1000 from emp;3、比较操作符&#xff1a;--比较运算符(between and包头不包尾)select * from …

Facebook面部识别新突破:可识别未标记照片中用户

来源&#xff1a;凤凰科技据科技博客TechCrunch报道&#xff0c;Facebook公司希望用户了解和掌控人们上传的照片&#xff0c;即便用户没有在照片中被标记出来。周二&#xff0c;Facebook推出了一项新的面部识别功能&#xff1a;照片检查&#xff08;Photo Review&#xff09;。…

oracle cronb,利用Crontab实现对Oracle数据库的定时备份

假设数据库的拥有者为oracle&#xff0c;数据库的用户为scott&#xff0c;其口令为trigger&#xff0c;Oracle数据库的参数$ORACLE_HOME为/usr/oracle&#xff0c;$ORACLE_SID为oracle1&#xff0c;则实现步骤如下&#xff1a;1、建立实现备份的shell在/usr/oracle中用vi命令建…