JNDI技术总结.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《JNDI技术总结.ppt》由用户(hwpkd79526)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JNDI 技术 总结
- 资源描述:
-
1、技术资料技术资料JNDIJNDI学习学习2 2目目 录录第一部分:什么是第一部分:什么是JNDIJNDI第二部分:为什么要用第二部分:为什么要用JNDIJNDI第三部分:怎么用第三部分:怎么用JNDI(JNDI(以及常用以及常用jndijndi类的介绍类的介绍)第四部分:在使用第四部分:在使用JNDIJNDI是要注意的事项是要注意的事项名词解释 Java命名和目录接口(the Java naming and directory interface,JNDI)是一组在Java应用中访问命名和目录服务的API。为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽
2、象层上。命名服务将名称和对象联系起来,使得读者可以用名称访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。名词解释 命名服务:就像DNS一样,通过命名服务器提供服务,大部分的J2EE 服务器都含有命名服务器。例如:http:/202.108.22.5/目录服务:一种简化的RDBMS 系统,通过目录具有的属性保存一些简单的信息。目录服务通过目录服务器实现,比如微软ACTIVE DIRECTORY 等。名词解释 我的理解 用过名字来查找对象,你给我一个名字,我给你一个对象。跟我们去图书馆借书差不多,当然是以前的那种方式,我们说一书名,然后工作人员那着我们给他的书名在目录中查
3、找,在去书架上找书,在借给我们。将对象和名字捆绑的技术,对象工厂负责生产出对象,这些对象都和唯一的名字绑在一起,外部资源可以通过名字获得某对象的引用。客户端客户端JNDI6JNDIJNDI可以访问的目录及服务:可以访问的目录及服务:DNS、XNam、Novell目录服务、目录服务、LDAP(Lightweight Directory Access Protocol 轻型目录访问协议轻型目录访问协议)、CORBA对对象服务、文件系统、象服务、文件系统、Windows XP/2000/NT/Me/9x的注册表、的注册表、RMI、DSML v1&v2、NIS。7 7JNDIJNDI原理原理将对象和名
4、字捆绑的技术,对象工厂负责生产出对象,这些对象都和唯一的名字绑在一起,外部资源可以通过名字获得某对象的引用。JNDIJNDI架构架构JNDIJNDI架构的理解架构的理解 JNDI的架构与JDBC的架构非常类似.JNDI架构提供了一组标准命名系统的API。在应用程序中,我们实际上只使到用以上几个包的中类.具体调用类及通信过程对用户来说是透明的.JNDI API提供了访问不同JNDI服务的一个标准的统一的实现,其具体实现可由不同的 Service Provider来完成。中间层为命名管理层。其功能应该由JNDI SPI来完成。最下层为JNDI SPI API及其具体实现 它它包括了几个增强和下面的
5、命名/目录服务提供者:LDAP(Lightweight Directory Access Protocol)服务提供者 CORBA COS(Common Object Request Broker Architecture Common Object Services)命名服务提供者 RMI(Java Remote Method Invocation)注册服务提供者 DNS(Domain Name System)服务提供者.FSSP(File System Service Provider)文件系统服务提供者 其它服务提供者 JNDIJNDI架构的理解架构的理解 前面讲解的只是作为应用程序客户
6、端的架前面讲解的只是作为应用程序客户端的架构实现构实现,其服务端是由其服务端是由SPI对应的公司对应的公司/厂商厂商来实现的来实现的,我们只需将服务端的相关参数传我们只需将服务端的相关参数传给给JNDI API就可以了就可以了,具体调用过程由具体调用过程由SPI来完成来完成.12第二部分:为什么要用第二部分:为什么要用JNDIJNDI 为了为了实现共享实现共享,计算机网络的发展就是为了达到资源的共,计算机网络的发展就是为了达到资源的共享享 命名或目录服务使读者可以命名或目录服务使读者可以集中存储共有信息集中存储共有信息,这一点在,这一点在网络应用中是非常重要的,因为这使得这样的应用更协调网络应
7、用中是非常重要的,因为这使得这样的应用更协调、更容易管理。例如,可以将打印机设置存储在目录服务、更容易管理。例如,可以将打印机设置存储在目录服务中,以便被与打印机有关的应用使用。中,以便被与打印机有关的应用使用。jndijndi诞生的理由似乎很简单。随着诞生的理由似乎很简单。随着分布式应用的发展分布式应用的发展,远,远程访问对象访问成为常用的方法。虽然说通过程访问对象访问成为常用的方法。虽然说通过SocketSocket等编等编程手段仍然可实现远程通信,但按照模式的理论来说,仍程手段仍然可实现远程通信,但按照模式的理论来说,仍是有其局限性的。是有其局限性的。RMIRMI技术,技术,RMI-II
8、OPRMI-IIOP技术的产生,使远程技术的产生,使远程对象的查找成为了技术焦点。对象的查找成为了技术焦点。JNDIJNDI技术就应运而生。技术就应运而生。JNDIJNDI技术产生后,就可方便的查找远程或是本地对象。技术产生后,就可方便的查找远程或是本地对象。13用来解决什么问题用来解决什么问题1 1、数据共享、数据共享命名或目录服务使读者可以命名或目录服务使读者可以集中存储共有信息集中存储共有信息,这一点在网络应用中是,这一点在网络应用中是非常重要的,因为这使得这样的应用更协调、更容易管理。例如,可以将打非常重要的,因为这使得这样的应用更协调、更容易管理。例如,可以将打印机设置存储在目录服务
9、中,以便被与打印机有关的应用使用。印机设置存储在目录服务中,以便被与打印机有关的应用使用。2 2、分布式应用、分布式应用 jndijndi诞生的理由似乎很简单。随着诞生的理由似乎很简单。随着分布式应用的发展分布式应用的发展,远程访问对象,远程访问对象访问成为常用的方法。虽然说通过访问成为常用的方法。虽然说通过SocketSocket等编程手段仍然可实现远程通信,等编程手段仍然可实现远程通信,但按照模式的理论来说,仍是有其局限性的。但按照模式的理论来说,仍是有其局限性的。RMIRMI技术,技术,RMI-IIOPRMI-IIOP技术的产技术的产生,使远程对象的查找成为了技术焦点。生,使远程对象的查
10、找成为了技术焦点。JNDIJNDI技术就应运而生。技术就应运而生。JNDIJNDI技术产技术产生后生后可方便查找远程和本地对象。可方便查找远程和本地对象。3 3、解决紧耦合问题、解决紧耦合问题14如果不用如果不用JNDIJNDI我们怎么解决之前的问题我们怎么解决之前的问题1 1、没有、没有JNDIJNDI的做法的做法举个数据库连接的例子举个数据库连接的例子程序员开发时,知道要开发访问程序员开发时,知道要开发访问MySQLMySQL数据库的应用,于是将一个对数据库的应用,于是将一个对 MySQL JDBC MySQL JDBC 驱动程序类的引用进行了编码,并通过使用适当的驱动程序类的引用进行了编
11、码,并通过使用适当的 JDBC JDBC URL URL 连接到数据库。连接到数据库。就像以下代码这样:就像以下代码这样:Connection conn=null;try Connection conn=null;try Class.forName(com.mysql.jdbc.Driver,Class.forName(com.mysql.jdbc.Driver,true,Thread.currentThread().getContextClassLoader();true,Thread.currentThread().getContextClassLoader();conn=DriverMa
12、nager.getConnection(jdbc:mysql:/MyDBServer?usconn=DriverManager.getConnection(jdbc:mysql:/MyDBServer?user=qingfeng&password=mingyue);/er=qingfeng&password=mingyue);/*使用使用connconn并进行并进行SQLSQL操作操作*/.conn.close();catch(Exception e)/.conn.close();catch(Exception e)e.printStackTrace();finally e.printStac
13、kTrace();finally if(conn!=null)try if(conn!=null)try conn.close();conn.close();catch(SQLException e)catch(SQLException e)这是传统的做法,也是以前非这是传统的做法,也是以前非JavaJava程序员程序员(如(如DelphiDelphi、VBVB等)常见的做法。这种做法一般等)常见的做法。这种做法一般在小规模的开发过程中不会产生问题,只要程序在小规模的开发过程中不会产生问题,只要程序员熟悉员熟悉JavaJava语言、了解语言、了解JDBCJDBC技术和技术和MySQLMySQL
14、,可以很,可以很快开发出相应的应用程序。快开发出相应的应用程序。优缺点优缺点 这样做的优点 简单 这样做的有的缺点 可扩展行差 数据库名称,用户名,密码可能随时改变,这时就的修改代码 数据库产品的修改 终端用户的增加 解决办法 程序员应该不需要关心“具体的数据库后台是什么?JDBC驱动程序是什么?JDBC URL格式是什么?访问数据库的用户名和口令是什么?”等等这些问题,程序员编写的程序应该没有对 JDBC 驱动程序的引用,没有服务器名称,没有用户名称或口令 甚至没有数据库池或连接管理。而是把这些问题交给J2EE容器来配置和管理,程序员只需要对这些配置和管理进行引用即可。就这样JNDI诞生了。
15、JNDIJNDI的做法:的做法:概述 首先,在在J2EE容器中配置JNDI参数,定义一个数据源,也就是JDBC引用参数,给这个数据源设置一个名称;然后,在程序中,通过数据源名称引用数据源从而访问后台数据库。具体步骤 在J2EE容器中配置JNDI参数,例如在jboss中的发布目录中的数据库XML文件中配置数据源 通过Lookup来获取数据源对象运行机制运行机制-1-11、首先程序代码获取初始化的 JNDI 环境并且调用 Context.lookup()方法从 JNDI 服务提供者那里获一个 DataSource 对象。2、中间层 JNDI 服务提供者返回一个 DataSource 对象给当前的
16、Java 应用程序这个 DataSource 对象代表了中间层服务上现存的缓冲数据源。3、应用程序调用 DataSource 对象的 getConnection()方法 运行机制运行机制4、当 DataSource 对象的 getConnection()方法被调用时,中间层服务器将查询数据库 连接缓冲池中有没有 PooledConnection 接口的实例对象。这个 PooledConnection 对象将被用于与数据库建立物理上的数据库连接5、如果在缓冲池中命中了一个 PooledCoonection 对象那么连接缓冲池将简单地更 新内部的缓冲连接队列并将该 PooledConnection
展开阅读全文