一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

J2EE or J2SE? JNDI works with both(from javaworld)

时间:2022-07-02 17:33:19 编辑:袖梨 来源:一聚教程网

欢迎大家指正!
-----------------------------
J2EE or J2SE? JNDI works with both
  JNDI(Java Naming and Directory Interface), 允许应用通过一个通用的接口来访问各种命名和目录服务。下面的特征表征了JNDI的架构。如同JDBC(Java Database Connectivity),JNDI并不是一种服务,而是一套接口;它允许应用使用标准API来访问很多不同的目录服务供应商。尽管Sun公司提供了适配器,比如LADP、DNS和CORBA,以连接已有的目录服务供应商,但是就如同JDK包含JDBC一样,它包含了JNDI接口,但并不包含JNDI服务供应商。然而,您可以选择使用免费或者开源JNDI供应商中的一种到您的J2SE应用中去。
  JNDI是整合J2EE应用的黏合剂。JNDI被设计用来支持具有较高动态组装和部署的那些应用,可以在不用重建整个系统的条件下经常的添加和更新各种组件。命名服务则通过作为一个组件注册中心来帮助组织企业级的应用。J2EE应用一般在如下一些方面使用JNDI:
  # 在一个集中、分级数据库中储存应用配置信息
  # 作为在不同应用组件间共享的活动对象的仓库,这些组件能够运行在不同的JVM或者不同的系统中
  # 作为已有目录服务例如LDAP的接口(通过使用特别的方式来访问外部的服务)
  象J2EE应用一样,更大、更多的动态J2SE应用将得益于由动态目录服务带来的松偶合以及动态绑定特点。
一个简单的JNDI例子
  从JNDI命名空间中储存和回溯对象是简单和易懂的;首先,获得JNDI的命名上下文(naming context),然后,使用bind()和lookup()方法来储存和回溯对象,就象Listing 1中显示的那样:
Listing 1. Store and retrieve objects from a JNDI namespace
  import javax.naming.*;
  public void createName() throws NamingException {
    Context context = new InitialContext();
    context.bind("/config/applicationName", "MyApp");
  }
  public String getName() throws NamingException {
    Context context = new InitialContext();
    return (String) context.lookup("/config/applicationName");

热门栏目