Java术语
英文全称是:Java Naming and Directory Interface
术语解释:一组帮助做多个命名和目录服务接口的API。
JNDI(Java Naming and Directory Interface)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。集群JNDI实现了高可靠性JNDI[8],通过服务器的集群,保证了JNDI的负载平衡和错误恢复。在全局共享的方式下,集群中的一个应用服务器保证本地JNDI树的独立性,并拥有全局的JNDI树。每个应用服务器在把部署的服务对象绑定到自己本地的JNDI树的同时,还绑定到一个共享的全局JNDI树,实现全局JNDI和自身JNDI的联系。
JNDI(Java Naming and Directory Interface)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。
JNDI可访问的现有的目录及服务有:
DNS、XNam 、Novell目录服务、LDAP(Lightweight Directory Access Protocol 轻型目录访问协议)、 CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、RMI、DSML v1&v2、NIS。
JNDI优点:
包含了大量的命名和目录服务,使用通用接口来访问不同种类的服务;
可以同时连接到多个命名或目录服务上;
建立起逻辑关联,允许把名称同Java对象或资源关联起来,而不必指导对象或资源的物理ID。
JNDI程序包:
javaxnaming:命名 *** 作;
javaxnamingdirectory:目录 *** 作;
javaxnamingevent:在命名目录服务器中请求事件通知;
javaxnamingldap:提供LDAP支持;
javaxnamingspi:允许动态插入不同实现。
利用JNDI的命名与服务功能来满足企业级APIs对命名与服务的访问,诸如EJBs、JMS、JDBC 20以及IIOP上的RMI通过JNDI来使用CORBA的命名服务。
JNDI与JDBC:
JNDI提供了一种统一的方式,可以用在网络上查找和访问服务。通过指定一个资源名称,该名称对应于数据库或命名服务中的一个纪录,同时返回数据库连接建立所必须的信息。
代码示例:
try{
Context cntxt = new InitialContext();
DataSource ds = (DataSource) cntxtlookup("jdbc/dpt");
}
catch(NamingException ne){
}
JNDI与JMS:
消息通信是软件组件或应用程序用来通信的一种方法。JMS就是一种允许应用程序创建、发送、接收、和读取消息的JAVA技术。
代码示例:
try{
Properties env = new Properties();
InitialContext inictxt = new InitialContext(env);
TopicConnectionFactory connFactory = (TopicConnectionFactory) inictxtlookup("TTopicConnectionFactory");
}
catch(NamingException ne){
}
访问特定目录:举个例子,人是个对象,他有好几个属性,诸如这个人的姓名、电话号码、电子邮件地址、邮政编码等属性。通过getAttributes()方法
Attribute attr =
directorygetAttributes(personName)get("email");
String email = (String)attrget();
通过使用JNDI让客户使用对象的名称或属性来查找对象:
foxes = directorysearch("o=Wiz,c=US", "sn=Fox", controls);
通过使用JNDI来查找诸如打印机、数据库这样的对象,查找打印机的例子:
Printer printer = (Printer)namespacelookup(printerName);
printerprint(document);
浏览命名空间:
NamingEnumeration list = namespacelist("o=Widget, c=US");
while (listhasMore()) {
NameClassPair entry = (NameClassPair)listnext();
display(entrygetName(), entrygetClassName());
}
参考资料:
>
不使用JNDI开发时,例如使用MySQL,要知道开发访问MySQL数据库的应用,于是将一个对 MySQL JDBC 驱动程序类的引用进行了编码,并通过使用适当的 JDBC URL 连接到数据库。
使用JNDI要在Web服务器中配置,例如Tomcat要在conf\contextxml中的<Resource>中配置数据源。具体怎么配置你可以百度搜索Java使用JNDI配置数据源。
JDBC配置数据源方式,和JNDI类似,就是将<Resource>中的配置自己在类中配置,要用到DBCP,需要3个jar包:
commons-collections4-40jar
commons-dbcp-14jar
commons-pool-16jar
配置方法很简单:
BasicDataSource dataSource = new BasicDataSource();//设置驱动类
dataSourcesetDriverClassName(className);
//连接字符串
dataSourcesetUrl(url);
dataSourcesetUsername(user);
dataSourcesetPassword(password);
//初始化连接
dataSourcesetInitialSize(initialSize);
// 最大连接数量
dataSourcesetMaxActive(maxActive);
//最大空闲连接
dataSourcesetMaxIdle(maxIdle);
//超时等待时间以毫秒为单位 6000毫秒/1000等于60秒
dataSourcesetMaxWait(maxWait);
//得到连接
Connection con = dataSourcegetConnection();
java开发的时候,数据库连接方式除了jdbc,jndi,还有JDBC-ODBC桥的方式、JDBC+厂商Database Connection Server+DataBase的形式和纯JDBC+DATABASE的连接方式。推荐选择千锋教育,千锋教育服务面对企业建立全方位、立体化、遍布全国的企业合作网络,覆盖全国一线二线城市大中小型公司。
Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持go to语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的 *** 作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。
想要了解更多Java培训的相关信息,推荐咨询千锋教育。千锋教育成立教研学科中心,推出贴近企业需求的线下技能培训课程。采用全程面授高品质、高体验培养模式,学科大纲紧跟企业需求,拥有国内一体化教学管理及学员服务,在职业教育发展道路上不断探索前行。
我们公司就用jndi,存在就有它的道理,
1、可以不用暴露数据库用户名、密码在代码配置中(尤其安全性要求高的项目)
2、有跨库事务时代码处理更简单(用的是resin容器)
3、打war包时不用区分测试生产配置,不用担心配置错数据库
JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源
comalibabadruidpoolDruidDataSourceFactory实现了javaxnamingspiObjectFactory,可以作为JNDI数据源来配置。
一、下载Druid的jar包
下载地址:>
先说说题外话,你问这个问题,说明你在这个领域打拼还不久,因为对一些概念还不清晰,不过持续百度知道,多涉猎涉猎,你就能成为高手。
首先,JDBC直连数据库,也称为数据源,是数据源的一种方式。
其次,我猜测你理解的数据源,可能有2种:
1)连接池框架实现的数据源,譬如C3P0等等
2)应用服务器上配置的数据源,譬如IBM WAS、tomcat上均可以配置JNDI数据源
最后,我简单说明下这2种和JDBC直连的区别:
1)利用连接池框架,数据源连接后,如果不使用,可以暂时放到池中,不关闭连接,而直连是每次创建新的连接,使用完毕后,手工去关闭,下次要使用,再次创建、关闭。连接池框架实现了池的缓存能力后,就无需这样了。
2)在服务器上创建JNDI数据源,这样做的原因是将开发工程师和WAS平台运维工程师的工作区分开,防止数据库连接信息的泄露,保证信息安全。开发工程师无须知道数据库的相关信息,只要在程序中使用JNDI数据源的名称即可。WAS平台工程师在WAS上配置该JNDI数据源。
不知道对这几种技术怎么回答你,你说的这些技术有的我都没听到过,我的水平有限只能暂时把我的经验技术分享给你,对于一些初期或中级javaweb开发人员来说,主要集中必须要掌握在这几种技术,javase基础必须掌握(对象,集合,IO,反射,代理常见的几种模式)。servlet,>
以上就是关于什么是JNDI 其用途全部的内容,包括:什么是JNDI 其用途、浅谈如何配置jndi与jdbc两种数据源连接、java开发的时候,数据库连接方式除了jdbc,jndi,还有有哪几种等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)