您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > j2ee规范-JNDI
JNDI(JavaNamingandDirectoryInterface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。(360百科)从上面的定义中可以看出JNDI提供了两种API。命名服务是将名称和对象联系起来。例如我们的手机的通讯录一样,手机通讯录里是姓名对应手机号,可以通过姓名找到手机号。目录服务是命名服务的自然扩展。它将有关现实世界中的事物(如人、计算机、打印机等等)描述为具有属性的对象,例如人这个对象,有性别、年龄。优点JNDI包含了大量的命名和目录服务,直接使用不同种类的服务,这样程序就不用与各种服务产生耦合。这就类似:我的手机的通讯录里存有提高班所有人的手机号,如果我想给某个人,直接找到他名字就能拨打,而不用再记住手机号码再输入手机号码拨打。这样我不用记手机号码,我和手机号码的耦合度就降低了。使用配置Tomcat的Server.xml[html]viewplaincopyprint?1.Contextpath=/JNDIDemodocBase=D:\workspace\JNDIDemo\WebRootdebug=0reloadable=truecrossContext=true2.LoggerclassName=org.apache.catalina.logger.FileLoggerprefix=localhost_quality_log.suffix=.txttimestamp=true/3.Resource4.name=jdbc/test!--JNDI数据池名称--5.type=javax.sql.DataSource!--数据类--6.password=karid!--密码--7.driverClassName=oracle.jdbc.driver.OracleDriver!--驱动--8.maxIdle=2!--最少可用lia--9.maxWait=5000!--最大等待时间5秒--10.username=karid!--用户名--11.url=jdbc:oracle:thin:@127.0.0.1:1521:karid12.maxActive=4!--最大可用连接--/13.14.ResourceParamsname=jdbc/test15.16.parameter17.nameremoveAbandoned/name18.!--AbandonedDBconnectionsareremovedandrecycled--19.valuetrue/value20./parameter21.parameter22.nameremoveAbandonedTimeout/name23.!--UsetheremoveAbandonedTimeoutparametertosetthenumberofsecondsaDBconnectionhasbeenidlebeforeitisconsideredabandoned.--24.value60/value25./parameter26.parameter27.namelogAbandoned/name28.!--Logastacktraceofthecodewhichabandoned--29.valuefalse/value30./parameter31.32.parameter33.namefactory/name34.!--DBCPBasicDatasourceFactory--35.valueorg.apache.commons.dbcp.BasicDataSourceFactory/value36./parameter37.38./ResourceParams配置web.xml[java]viewplaincopyprint?1.prename=codeclass=htmldescriptionMySQLTestApp/description2.resource-ref3.descriptionDBConnection/description4.res-ref-namejdbc/test/res-ref-name5.res-typejavax.sql.DataSource/res-type6.res-authContainer/res-auth7./resource-ref使用JNDI定义和引用[java]viewplaincopyprint?1.publicclassDataSourceFactory2.{3.privatestaticDataSourceds;4.publicstaticDataSourcecreateDataSourde()5.{6.if(ds==null)7.{8.try9.{10.ContextinitContext=newInitialContext();11.if(initContext==null)12.System.out.println(无配置环境);13.ContextenvContext=(Context)initContext.lookup(java:/compenv);14.ds=(DataSource)envContext.lookup(jdbc/test);//根据名称取得数据源15.}16.catch(NamingExceptione)17.{18.e.printStackTrace();19.}20.}21.returnds;22.}23.}总结JNDI包含了大量的命名和目录服务,直接使用不同种类的服务,不用关心服务的提供者是什么。就像配置数据源一样,不用去关心它用的是什么数据库,只管去去引用JNDI即可。
本文标题:j2ee规范-JNDI
链接地址:https://www.777doc.com/doc-8510167 .html