什么是JNDI 其用途

什么是JNDI 其用途,第1张

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,还有有哪几种等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9551408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存