J2EE中的JNDI

JNDI是用于访问不同命名和目录服务的统一API接口。

功能:它可以用来提供查找服务。如:Web应用环境变量、EJBs和他们的环境变量,通过DataSources的数据库连接池等。比如在Tomcat中配置了一个JNDI数据源,那么在程序中之需要用Java标准的API就可以查找到这个数据源,以后数据源配置发生变化了,等等,程序都不需要改动,之需要改改JNDI的配置就行。增加了程序的灵活性,也给系统解耦了。

但不能将它当做数据库来使用。JNDI架构提供了一个标准的、与命名系统无关的API,这个API构建在特定于命名系统的驱动程序之上。这一层帮助把应用程序和实际的数据源隔离开来,因此无论应用程序是访问LDAP、RMI、DNS还是其他的目录服务,这都没有关系。换句话说,JNDI与任何特定的目录服务实现无关,你可以使用任何目录,只要你拥有相应的服务提供程序接口(或驱动程序)即可

从服务器端对象连接到JNDI

Context ctx=new InitialContext();//创建一个InitialContext

从任何一个地方连接到JNDI

1.创建Environment对象

weblogic.jndi.Enviroment env=new weblogic.jndi.Enviroment();

2.填写Environment:

env.setProviderurl("t3://127.0.0:7001");//WebLogic Server的位置

env.setSecurityPrincipal("system");//安全信息

env.setSecurityCredentials("PassWord‘);

context ctx=env.getInitialContext();//使用Environment对象创建InitialContext

创建一个用于绑定对象的新SubContext

1.创建Environment对象:

Context ctx=env.getInitialContext();//首先必须获得存在的Subcontext或InitialContext

2.填写Environment:

Context subcontext=ctx.createSubcontext("newSubcontext");//在当前的Context下创建新的Subcontext

subcontext Subcontext.rebind("boundObject",object);//绑定一个对象

subcontext.close();//当结束时经常关闭访问的资源

ctx.close();

其他的连接到JNDI的方法有:使用‘Contstant‘Properties名和Hashtable类

使用‘Hardcoded’名和Properties类

      一些JNDI环境属性:

jndi.properties文件为所以的Initial Contexts设置默认的属性

它的搜索次序:先CLASSPATH然后$JAVA_HOME/lib/

用Lookup()从JNDI树获得对象,通过lookup()返回的对象必须映射到他们合适的类型

远程绑定对象:

绑定到远程命名服务的对象必须是序列化的;访问命名服务时,对象是采用复制机制                                                                                                  

我们所有人每天都在不自知的情况下使用命名服务。例如,当你在浏览器中输入URL http://java.sun.com 时,域名系统(Domain Name System ,DNS)将这个以符号表示的URL转换为一个通信标识符(IP地址)。在命名系统中,对象的范围可以从位于DNS记录中的名称变动到应用程序服务器中的企业JavaBeans组件(Enterprise JavaBeans Components
,EJBs),还可以到轻量级目录访问协议(Lightweight Directory Access Protocol ,LDAP)中的用户配置文件。

时间: 2024-10-09 06:10:31

J2EE中的JNDI的相关文章

【转贴】J2EE中的13种技术规范

J2EE平台由一整套服务(Services).应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持,下面对J2EE中的13种技术规范进行简单的描述(限于篇幅,这里只能进行简单的描述): 1.JDBC(Java Database Connectivity):    JDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDCB对数据库的访问也具有平台无关性. 2.JNDI(Java Name and Direct

随笔11 J2EE中常用的名词解释

J2EE中常用的名词解释 ① web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接和容器中的环境变量接口交互,不必关注其它系统问题.主要由WEB服务器来实现.例如:TOMCAT,WEBLOGIC,WEBSPHERE等.该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准.我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器. ② Web container:实现J2EE体系结构中Web组件协议的容器.这个协议规定

J2EE中几个常用的名词解释

1.web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接和容器中的环境变量接接口互,不必关注其它系统问题.主要有WEB服务器来实现.例如:TOMCAT,WEBLOGIC,WEBSPHERE等.该容器提供的接口严格遵守J2EE规范中的WEB APPLICATION 标准.我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器. 2.Web container:实现J2EE体系结构中Web组件协议的容器.这个协议规定了一个Web组件运行时的环

J2EE中的HttpSession

J2EE中的HttpSession总结: ①什么是session? session是服务器端技术,利用这个技术,服务器在运行时可以为每一个浏览器创建一个共享的session对象,由于 session为用户浏览器独享,所以当浏览器访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户 再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务.                    ②session是如何创建的呢? 当用户打开浏览器,访

裴东辉-MyEclipse和Eclipse中使用JNDI来配置程序的开发,以及服务器的配置

MyEclipse: 路径下面:C:\web\myeclipse\apache-tomcat-6.0.26\conf\Catalina\localhost 部署系统test.xml: <Context path="/test" docBase="C:\web\myeclipse\web\TEST\WebRoot" debug="5" reloadable="true" crossContext="true&qu

单点登录与消息队列以及在J2EE中的实现方案

前言 这次为大家简单介绍两个在WEB开发中经常使用的概念——单点登录和消息队列以及具体到J2EE中的一些实现方案.本文原创性的工作比较少,主要是一些总结概括和自己的理解. 单点登录SSO SSO的业务场景 所谓单点登录就是在一个站点登录之后可以授信给其他站点,这样就可以做到一次登录,到处操作.单点登录的实质就是安全上下文(Security Context)或凭证(Credential)在多个应用系统之间的传递或共享. 大部分的网站采用Cookie作为登录的一种简单实现方案,在同一个一级域名下面,

在tomcat中配置JNDI

1.关于tomcat的server.xml配置文件 在tomcat的配置文件conf/server.xml文件的<Host>标签中加入<Context>标签可以标记当前Web应用,应用随系统启动而加载,如: <Context path="" docBase="E:\TestPro\WebRoot" reloadable="true" > </Context> 这里讲path属性标记为空,访问系统时就

J2EE中你必须了解的13种技术规范

1)JDBC(Java Database Connectivity): JDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDCB对数据库的访问也具有平台无关性. 2)JNDI(Java Name and Directory Interface): JNDI API被用于执行名字和目录服务.它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP,本地文件系统,或应用服务器中的对象. 3)EJB(Enterprise JavaB

【J2EE浅析】——JNDI

一.JNDI概述 JNDI(JavaNaming Directory Interface)--java命名和目录接口,是一组在Java应用中访问命名和目录服务的API.为开发人员提供了查找和访问各种命名和目录服务的通用.统一的接口,类似JDBC,都是构建在抽象层上.是J2EE的标准之一,所有的J2EE容器都必须提供一个JNDI的服务. JNDI的命称可能会让人产生混淆,一开始接触到这一规范觉得这是一个用来操作目录的,事实上,可以把这个目录理解成为JNDI存放对象时使用的格式,也就是说,JNDI以