`
阅读更多
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程序包:
  javax.naming:命名操作;
  javax.naming.directory:目录操作;
  javax.naming.event:在命名目录服务器中请求事件通知;
  javax.naming.ldap:提供LDAP支持;
  javax.naming.spi:允许动态插入不同实现。
  利用JNDI的命名与服务功能来满足企业级APIs对命名与服务的访问,诸如EJBs、JMS、JDBC 2.0以及IIOP上的RMI通过JNDI来使用CORBA的命名服务。
  JNDI与JDBC:
  JNDI提供了一种统一的方式,可以用在网络上查找和访问服务。通过指定一个资源名称,该名称对应于数据库或命名服务中的一个纪录,同时返回数据库连接建立所必须的信息。
  代码示例:
  try{
  Context cntxt = new InitialContext();
  DataSource ds = (DataSource) cntxt.lookup("jdbc/dpt");
  }
  catch(NamingException ne){
  ...
  }
  JNDI与JMS:
  消息通信是软件组件或应用程序用来通信的一种方法。JMS就是一种允许应用程序创建、发送、接收、和读取消息的JAVA技术。
  代码示例:
  try{
  Properties env = new Properties();
  InitialContext inictxt = new InitialContext(env);
  TopicConnectionFactory connFactory = (TopicConnectionFactory) inictxt.lookup("TTopicConnectionFactory");
  ...
  }
  catch(NamingException ne){
  ...
  }
  访问特定目录:举个例子,人是个对象,他有好几个属性,诸如这个人的姓名、电话号码、电子邮件地址、邮政编码等属性。通过getAttributes()方法
  Attribute attr =
  directory.getAttributes(personName).get("email");
  String email = (String)attr.get();
  通过使用JNDI让客户使用对象的名称或属性来查找对象:
  foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls);
  通过使用JNDI来查找诸如打印机、数据库这样的对象,查找打印机的例子:
  Printer printer = (Printer)namespace.lookup(printerName);
  printer.print(document);
  浏览命名空间:
  NamingEnumeration list = namespace.list("o=Widget, c=US");
  while (list.hasMore()) {
  NameClassPair entry = (NameClassPair)list.next();
  display(entry.getName(), entry.getClassName());
  }
  参考资料:
  http://java.sun.com/products/jndi/examples.html
  http://java.sun.com/products/jndi/serviceproviders.html
  常用的JNDI操作:
  常用的JNDI操作:
  void 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);
  代码示例:重新得到了名称、类名和绑定对象。
  NamingEnumeration namEnumList = ctxt.listBinding("cntxtName");
  ...
  while ( namEnumList.hasMore() ) {
  Binding bnd = (Binding) namEnumList.next();
  String sObjName = bnd.getName();
  String sClassName = bnd.getClassName();
  SomeObject objLocal = (SomeObject) bnd.getObject();
  }
分享到:
评论

相关推荐

    J2EE基础:JNDI定义Oracle数据源的方法

    本篇文章将详细介绍如何使用JNDI来定义Oracle数据源,这对于构建可扩展且高效的Web应用程序至关重要。 一、JNDI数据源概述 JNDI数据源配置是J2EE环境中管理数据库连接的一种方式。数据源是一种容器管理的资源,由...

    JNDI示例整合SSH

    3. **JNDI数据源配置:** 数据源通常在服务器的配置文件中定义,例如在Tomcat的`context.xml`中。配置完成后,应用可以通过JNDI查找,如`Context初始化参数`来获取数据源,这可以避免硬编码数据库连接信息。 **SSH...

    配置 JNDI 数据源

    2. Tomcat配置:在Tomcat的`conf/server.xml`文件中,需要添加一个GlobalNamingResources下的DataSource元素,定义JNDI数据源。例如: ```xml ... type="javax.sql.DataSource" driverClassName=...

    java jndi的使用

    数据源的JNDI名称会在这些配置文件中定义,以便应用可以通过JNDI查找服务。例如,一个常见的JNDI名称可能是`java:comp/env/jdbc/MyDataSource`。 使用JNDI的步骤大致如下: 1. **初始化初始上下文**:首先,我们...

    JNDI学习文档.doc

    JNDI本身并不提供任何实际的服务,而是定义了一套标准接口,由具体的服务提供商(如 LDAP、DNS、RMI等)来实现。这使得开发者可以灵活地选择适合应用的命名或目录服务。例如,EJB容器通常会提供一个Java企业版(Java...

    jndi连接池帮助文档

    配置数据源通常在`conf/server.xml`中进行,定义一个`Resource`元素,设置数据源的相关属性,如URL、用户名、密码等。应用中通过`InitialContext`查找这个JNDI名,即可获取到数据源实例,然后通过数据源获取数据库...

    jndi用到的所有jar

    1. **javax.naming** 和 **javax.naming.directory**:这是Java标准版(Java SE)提供的核心JNDI API,它们定义了用于操作命名和目录服务的基本接口和类。 2. **javax.sql.DataSource**:这是Java数据库连接(JDBC...

    04_JNDI.pdf

    1. **设置InitialContext的环境属性**:通过配置文件或代码的方式定义环境属性,包括JNDI的实现类、提供商URL、认证信息等。 2. **创建InitialContext对象**:根据设置好的环境属性创建InitialContext对象。 3. **...

    tomcat-jndi

    局部JNDI则是在每个Web应用的上下文中定义,配置文件通常位于`WEB-INF/web.xml`。局部JNDI资源只对当前Web应用可见,提供了一种灵活的资源隔离方式。比如,为某个特定应用定义数据源,可在`web.xml`中写入: ```xml...

    jndi加密.zip

    1. **加密步骤**:首先,使用AES算法和一个预先定义的密钥(需要妥善保管)对数据库密码进行加密,得到密文。 2. **配置JNDI**:将加密后的密码作为JNDI的值,例如,我们可以在Tomcat的context.xml中创建一个JNDI...

    JNDI配置详细介绍

    接下来,在应用的`WEB-INF/web.xml`文件中,我们需要添加`<resource-ref>`元素来定义数据源的引用。例如: ```xml <description>Resource reference to a factory for java.sql.Connection instances that may be...

    jndi配置

    1. **服务器配置**:在Java EE服务器的配置文件(如Tomcat的context.xml或server.xml)中定义JNDI资源。 2. **应用配置**:在Web应用的web.xml文件中,可以通过`<resource-ref>`元素声明对JNDI资源的引用。 3. **...

    JNDI配置原理详解.doc

    然后,定义了一个实现了`Remote`接口的`RemoteDate`类,并将其绑定到了JNDI中。之后可以通过如下方式查询该对象: ```java InitialContext ctx = new InitialContext(); Date startTime = (Date) ctx.lookup("java:...

    JNDI Java操作示例

    ### JNDI Java操作示例解析 #### 一、引言 JNDI(Java Naming and Directory Interface)是Java平台中用于访问命名和目录服务的API。它提供了一种查找和定位应用程序所需的资源(如数据库连接、消息队列、EJBs等)...

    tomcat6.0连接通过JNDI连接mysql实例

    在上面的配置中,我们定义了一个名为 `jdbc/JNDIDatabase` 的 JNDI 资源,该资源是一个数据库连接池,使用 `com.mysql.jdbc.Driver` 驱动程序连接到 `localhost:3306` 的 MySQL 实例。 使用 JNDI 资源 在 Java ...

    ibatis+jndi+mysql

    4. **创建映射文件** - 编写 Emp.xml,这是与 Emp.java 类映射的 SQL 映射文件,定义 SQL 语句及其结果集映射。 5. **初始化 SqlMapClient** - 在代码中创建 SqlMapClient 实例,它是 Ibatis 的入口点,用于执行 ...

    java JNDI总结

    在这个配置文件中,`jndi-name`指定了数据源的JNDI名称,`connection-url`则定义了数据库的连接地址等信息。 在应用程序中,可以使用以下代码来获取这个数据源: ```java Context ctx = new InitialContext(); ...

    JNDI使用

    JNDI并不提供命名服务,而是定义了访问这些服务的标准API。 - **Directory Service**:目录服务,它扩展了命名服务,除了名字到对象的映射外,还提供了属性的存储,比如用户信息、配置信息等。 - **Naming Context**...

    spring 配置jndi

    例如,在Tomcat中,可以在`server.xml`或`context.xml`中定义一个`<Resource>`标签来创建一个数据源,并为其指定一个唯一的JNDI名称。 2. **Spring的JNDI查找配置**: - 在Spring应用上下文中,使用`jee:jndi-...

Global site tag (gtag.js) - Google Analytics