技术开发 频道

目录服务与JNDI


IT168技术文档】 
    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()); }
   
0
相关文章