J2EE 13 规范之解读JNDI

  对于我这样初次接触J2EE的菜鸟来说,J2EE的 13规范都显得那么神秘。

  今天先从JNDI说起,让我们一个一个的揭开13规范的神秘面纱。

  
JNDI                                                           

  JNDI(Java Naming and Directory Interface)Java 命名与目录接口,JavaEE规范中重要的规范之一,是命名

服务的抽象机制。

  常用的JNDI操作:                                     

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

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

rebind()而不使用bind(),因为当有重名的时候rebind()不会出现异常,而bind()会报异常。

  unbind(String sName),释放:用来把对象从目录中释放出来。

  lookup(String sName),查找:返回目录总的一个对象。

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

  NamingEnumeration listBindings(String sName),清单:返回绑定在特定上下文中指定属性名对象的清单列

表,它返回名字、类和对象本身,它用于那些需要对对象进行实际操作的应用。具体使用如下:

  //得到初始目录环境的一个引用

  Context cntxt = new InitialContext();

  

实例:                                                        

     Binding示例:

<span style="font-size:18px;">public static InitialContext getInitialContext() throws NamingException {
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY,
         "weblogic.jndi.WLInitialContextFactory");
    env.put(Context.PROVIDER_URL,"t3://localhost:7001");
    InitialContext context = new InitialContext(env);
    return context;
}
//获得 initial context
InitialContext initialContext = getInitialContext();
//创建一个名为 Bank 的对象.
Bank myBank = new Bank();
//把Bind 对象绑定到JNDI树。
initialContext.rebind("theBank",myBank);
</span>

Lookup示例:

public static InitialContext getInitialContext() throws NamingException {
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY,
         "weblogic.jndi.WLInitialContextFactory");
    env.put(Context.PROVIDER_URL,"t3://localhost:7001");
    InitialContext context = new InitialContext(env);
    return context;
}
//获得 initial context
InitialContext initialContext = getInitialContext();
//找到绑定的Bank 对象.

Bank myBank = (Bank) initialContext.lookup("theBank");

    

    
JNDI作用                                                           

  为开发人员提供查找和访问各种命名和目录服务的通用、统一的接口

  我的理解:                                                 

  大家都用过HashTable和Dictionary。他们的工作原理是:以Key和Value的形式存储对象,每一个添加项都是由

一个值及其相关连的键组成。在使用的时候可以根据Key找到相应的对象。

  JNDI也可以这样理解。他利用bind和rebind操作同样以键值(Key和Value)的形式将对象绑定到JNDI树上,然

后以lookup操作根据Key查找到相应的Value(对象),进行操作。

  每一个规范都是对编程某一方面的抽象,JNDI主要提供查找服务。它为编程人员提供了一个统一的操作方式,不

管是LDAP、RMI、DNS、目录服务、文件服务、对象、配置文件等等,我们只需知道它们的名字就可以获取和操作

他们。

  J2EE 规范要求所有 J2EE 容器都要提供 JNDI 规范的实现。JNDI 在 J2EE 中的角色就是“交换机” —— J2EE 组

件在运行时间接地查找其他组件、资源或服务的通用机制。JNDI 在 J2EE 应用程序中的主要角色就是提供间接层,

这样组件就可以发现所需要的资源,而不用了解这些间接性。从这方面来看JNDI起到的作用类似于外观模式,这么做

也能够解除外部资源与应用程序之间的耦合。

时间: 2024-11-09 03:00:11

J2EE 13 规范之解读JNDI的相关文章

J2EE的13 规范之解读Servlet

Servlet 是什么? 第一,Servlet是一种规范,由Sun公司制定的服务器端组件规范. 第二,Servlet 可以运行在web服务器或应用服务器上. 第三,Servlet由Servlet容器进行管理,可实现诸如"实例化并管理Servlet对象"."调用Servlet生命周期方 法"."解析及封装特定协议的请求和响应"等工作. 第四,作为来自 Web 浏览器的请求和 数据库或应用程序之间的中间层,Servlet可以收集来自网页的用户请 求,

J2EE的13 规范之解读JSP

什么是JavaServer Pages? JSP(全称Java ServerPages)是由SunMicrosystems公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态 生成HTML.XML或其他格式文档的Web网页的技术标准. 从上面的话不难看出JSP的核心是:能够及时响应客户请求的动态网页开发技术.它使用JSP的标签在HTML网页中插入Java代码.标签通常以 <%开头以%>结束. JSP的本质是Java servlet,主要用于实现Javaweb应用程序的用户

J2EE 13规范(3)-Java Servlet

Servlet简介: 一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过"请求-响应"编程模型来访问的应用程序.虽然servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序.Java Servlet技术为这些应用程序定义了一个特定于HTTP的 servlet类. javax.servlet和javax.servlet.http包为编写servlet提供了接口和类.所有的servlet都必须实现Servlet接口,

J2EE 13规范(4)-JSP

JSP全称(Java Server Page ),也称javaserver页面.看到jsp是否立马想到原先以前学过的asp呢. 一.jsp和asp的比較: JSP(Java Server Page)与ASP(Active Server Page)两者都是经常使用的动态网页技术,也都是能够嵌入HTML中的程序,但两者是有着本质的不同,主要从下面几个方面对其进行比較: 1.Webserver的支持:大多数通用的 Webserver如:Apache.Netscape和Microsoft IIS都支持J

深入浅出J2EE之(一)—13规范

解决什么问题? 在许多企业级应用中,例如数据库连接.邮件服务.事务处理等都是一些通用企业需求模块,这些模块如果每次在开发都由开发人员来完成的话,将会造成开发周期长和代码可靠性差等问题.于是许多大公司开发了自己的通用模块服务.这些服务性的软件系列同称为中间件. 在上述的需求基础之上,许多公司都开发了自己的中间件,但其与用户的沟通都各有不同,从而导致用户无法将各个公司不同的中间件组装在一块为自己服务.从而产生瓶颈.为了通用必须要提出规范,不然无法达到通用,于是提出标准的概念. 简单理解:每个公司将通

J2EE开发规范

J2EE开发规范一 JAVA编码规范1 命名规范1.1 包命名? 包名称必须全部用小写.? 命名方式:业务领域名.公司名.项目名.模块名 如com.yr.xxx.dao.1.2 类命名类名以英文单词取名,首字母必须大写,多个英文单词以大写字母间隔,避免使用单词的缩写,除非它的缩写已经广为人知,如HTTP.类名中不允许'_'. '-'等符号. 1.3 属性/local变量命名? 定义属性的位置,在类定义的开始,按照public,protected,package,private顺序放置.定义loc

J2EE 13个规范概览

J2EE平台由一整套服务(Services).应用程序接口(APIs)和协议构成,它对开发基于Web的多层应用提供了功能支持.下面对J2EE中的13种进行简单的描述: 1. JDBC(Java Database Connectivity): JDBC API为访问不同的数据库提供了一种统一的途径,象ODBC一样,JDBC对开发者屏蔽了一些细节问题,另外,JDCB对数据库的访问也具有平台无关性. 简单说JDBC可以干三件事:与数据库连接.发送操作数据库的语句.处理结果: 2. JNDI(Java

h5鱼虾蟹平台搭建和MySQL数据库规范及解读

一.基础规范 第一条:必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发h5鱼虾蟹平台搭建Q1446595067官网:h5.haozibbs.com 性能更好.CPU及内存缓存页优化使得资源利用率更高 第二条:必须使用utf8(utf8mb4)字符集 解读:万国码,无需转码,无乱码风险,节省空间,utf8mb4是utf8的超集,由于近年移动设备的增多,emoji表情以及部分不常见汉字在utf8下会表现为乱码,故需要升级至utf8mb4 第三条:数据表.数据字段必须加入中文注释 解读:N年

【J2EE】十三个规范:总结

[ 介绍] J2EE是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进 而提高可移植性.安全与再用价值. J2EE核心是一组技术规范与指南,其中所包含的各类组件.服务架构及技术层次,均有共同的标准及规格,让各 种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内 部或外部难以互通的窘境. [J2EE 13规范] JDBC DBC是java中定义的专门用于连接数据库的服务层.针对不同的数据库(SQL