JSEE总结(一)——JNDI

一、什么是JNDI

早就听说J2EE有13个规范,今天接触了第一个——JNDI,这里所说的规范,其实是一种标准,就像Web开发中接触到的W3C和IE类似。规定了开发人员在一个领域开发时使用某种技术所必须遵循的开发标准或开发方法,具有一定的强制性。

而JNDI也是这13个规范之中的一个:是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。如同其它很多Java技术一样,JDNI是provider-based的技术,暴露了一个 API和一个服务供应接口(SPI)。这意味着任何基于名字的技术都能通过JNDI而提供服务,只要JNDI支持这项技术。很多技术利用JNDI来命名和定位实体,因此,可以把它理解为一种对象和名字捆绑在一起的技术,也就是说通过名字我们就可以找到它对应的对象。那么此时要求名字是唯一的。

所以,JDNI可以应用于查找技术,主要用于查找:

1、Web应用环境变量

2、EJBs和他们的环境变量

3、通过DataSources的数据库连接池

4、JMS目标和连接工厂

5、其它服务

注意:1、不能讲JNDI当做数据库使用

2、JNDI的对象存储在内存中

3、访问JNDI对象与网络性能有关

二、JNDI的应用

1、JNDI树

JNDI中存放对象是以树的形式来存放的,如图:

如上图所示:context相当于树中的节点,而树的叶子节点则相当于实际存储的对象。

2、创建JNDI树

1、创建初始节点InitialContext

//创建一个InitialContext
Context ctx=new InitialContext();
//创建Enviroment对象
Weblogic.jndi.Enviroment env=new weblogic.jndi.Enviroment();
Env.setProviderurl("t3://127.0.0.1:7001");//server的位置
Env.setSecurityPrincipal("system")//安全信息
Env.setSecurityCredentials("PassWord");
//使用Environment对象创建InitialContext
Context ctx=env.getInitialContext();

2、创建子节点,可用于绑定对象

//创建Enviroment对象
Context ctx=env.getInitialContext();
//填写Enviroment
Context subcontext=ctx.createSubcontext("newSubcontext");//在当前Context下创建新的Subcontext
Subcontext.rebind("boundObject",object);//绑定一个对象
Subcontext.close();//当结束时关闭访问
Ctx.close();

3、绑定对象

Context ctx=getInitialContext();
//创建名为myBank的对象
Bank myBank=new Bank();
//把对象绑定到JNDI树
Ctx.rebind("theBank",myBank);
Ctx.close();

3、JNDI中的常用方法

bind(String sName,Object object);――绑定:把名称同对象关联的过程

void rebind(String sName,Object object);――重新绑定:用来把对象同一个已经存在的名称重新绑定

void unbind(String sName);――释放:用来把对象从目录中释放出来

void lookup(String sName,Object object);――查找:返回目录总的一个对象

void rename(String sOldName,String sNewName);――重命名:用来修改对象名称绑定的名称

NamingEnumeration listBinding(String sName);――清单:返回绑定在特定上下文中对象的清单列表

NamingEnumeration list(String sName);

以上是关于J2EE中的JNDI的一个简单的介绍,更多信息请参考博客:http://javacrazyer.iteye.com/blog/759485

时间: 2024-10-12 20:46:12

JSEE总结(一)——JNDI的相关文章

JNDI在Tomcat中的配置

使用JNDI获取连接对象 java:comp/env/jdbc/news 这段为固定写法java:comp/env/ 在Tomcat中的配置 配置在:context.xml文件内 F:\apache-tomcat-7.0.68-windows-x64\apache-tomcat-7.0.68\conf\context.xml ---------mySQL<Resource name="jdbc/news"auth="Container" type="

JNDI

JNDI基础 一 简介 1.JNDI:Java Naming and Directory Interface,即Java命名和目录接口.JNDI包含了一些标准API接口,Java程序可以通过这些接口来访问命名目录服务.JNDI不依赖于任何独立的命名目录服务器,不管采用哪种命名目录服务器,应用程序都可以通过统一的JNDI接口来调用.要使用JNDI,必须要安装jdk 1.3以上版本. 2.命名服务:就是将名字和计算机系统内的一个对象建立关联,从而允许应用程序通过该名字访问该对象.简而言之,命名服务就

理解JNDI中 java:comp/env/jdbc/datasource 与 jdbc/datasource 的不同之处(转)

在描述JNDI,例如获得数据源时,JNDI地址有两种写法,例如同是  jdbc/testDS 数据源: A:java:comp/env/jdbc/testDS B:jdbc/testDS   这两种写法,配置的方式也不尽相同,第一种方法应该算是一种利于程序移植或迁移的方法,它的实现与“映射”的概念相同,而B方法,则是一个硬引用. java:comp/env 是环境命名上下文(environment naming context(ENC)),是在EJB规范1.1以后引入的,引入这个是为了解决原来J

JPA, JNDI, OSGi

JPA Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. JNDI Java Naming and Directory Interface,Java命名和目录接口,是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务

JNDI深入浅出

1.什么是JNDI JNDI(The Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用名称访问对象.目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性. 命名或目录服务使你可以集中存储共有信息,这一点在网络应用中是重要的,因为这使得这样的应用更协调.更容易管理.例如,可以将打印机设置存储在目录服务中,以便被与打印机有关的应用使用. 命名服务中的

Springmvc +JNDI 在Tomcat下 配置数据源(转)

一.             简介 jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用名称访问对象.目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性. 二.             tomcat配置jndi有三种方式. 第一种:单个应用独享数据源 在Tomcat的server.xml找到工程的Context节点,添加一个私有数据源 <

tomcat配置JNDI获取数据源

各个web工程可以通过工程内的xml文件配置访问数据库的数据源,这样的配置是各个工程私有的.基于JNDI为tomcat配置数据源,则可以做成全局的,各工程只需要通过便签引用数据源即可. 1.需要将数据库的连接驱动mysql-connector-java-5.1.21.jar及数据库连接池的jar包druid-0.2.9.jar放到Tomcat 6.0\lib下. 2.修改tomcat的配置文件,基于JNDI配置数据源,Tomcat 6.0\conf\context.xml改成如下即可,原文件中多

JNDI 使用

J2EE技术规范(一)--JNDI 分类: java 基础2012-12-02 20:05 1539人阅读 评论(14) 收藏 举报 学习Java,我们首先要掌握的就是十三种技术规范,我们接下来就一步一步的来学习.今天主要是讲讲JNDI. 一.理解JNDI的用途: JNDI是用于访问不同的命名和目录服务的统一API接口. 二.那何时使用JNDI呢: (1)JNDI是一种查找服务,用于查找: Web应用环境变量 EJBs和它们的环境变量 通过DataSources的数据库连接池 JMS目标和连接工

Hibernate 异常 : Error parsing JNDI name [xxx]

初学 Hibernate ,用官方给的日志模板配置好了日志,跑起小例子, 控制台中的日志里写了一些异常: 21:16:36,036 DEBUG EntityLoader:146 -  Static select for entity cn.sjll.hibernate435.model.UserModel  [OPTIMISTIC_FORCE_INCREMENT]: select usermodel0_.ID as ID1_0_0_,  usermodel0_.NAME as NAME2_0_0