【进阶EJB】JNDI知多少?

   上篇文章我们宏观的介绍了一下何为EJB,在上篇文章的结尾我为大家埋下了一个伏笔,就是何为JDNI呢?在很多关于EJB的资料中介绍了JNDI,但是弄得我也是云里雾里的,所以我们借着今天这篇文章,就来好好扒一扒什么是JNDI。

    JNDI知多少?

EJB对象由容器(JBoss)提供,因此不能在程序中使用创建实例的方法来生成EJB对象,而需要采用Java的JNDI(Java
Naming and Directory Interface),即Java的命名和目录接口来获得EJB对象的引用。可以简单的把JNDI理解为一种将对象和名字绑定的技术,JBoss容器负责生产出对象,这些对象都有唯一的名字绑定,外部程序可以通过名字来获得对象的引用。所以换句话说,JNDI是Sun公司提供的一种标准的Java命名系统接口。

在结构上,JNDI由两部分组成:即API和SPI(Service
Provider Intergace,服务提供商接口)。JNDI提供统一的客户端API,应用程序通过客户API访问命名和目录服务(目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性);服务提供商接口SPI用于供厂商创建命名和目录服务的JNDI实现。

JNDI的架构和JDBC的架构非常类似,所以网上有一系列关于JNDI和JDBC区别的文章,有兴趣的可以自己去查阅。

对于EJB开发者来说,我们只需要知道使用客户API如何访问命名和目录服务即可,而不需要知道SPI的使用,因为我们不需要使用SPI开发JNDI实现产品。就好比我们通过JDBC访问数据库,我们只需要知道使用JDBC
API如何访问数据库,而不需要知道数据库的JDBC驱动如何实现,只知道我们要实现的就可以了,而不需要了解内部的处理调用流程、原理。

J2EE规范要求所有的J2EE容器都要提供JNDI规范的实现,JNDI在J2EE中的角色就是“交互机”,就是J2EE组件在运行时间间接的查找其他组件、资源或服务的通用机制,也就是说JNDI在J2EE应用程序中提供间接层,这样组件就可以发现所需要的资源,而不用了解这些间接性。这样就暗合了上段中我们所提到的,对于EJB开发者而言只需要知道使用客户API如何访问命名和目录服务即可,而不需要知道SPI的使用。

好了,JNDI的介绍就这么多,如果您有更好的想法欢迎您在下方留言,谢谢!

时间: 2024-09-29 18:04:31

【进阶EJB】JNDI知多少?的相关文章

【进阶EJB】深入探讨三种Bean(三)——MessageDriven Bean

通过前两篇文文章 [进阶EJB]深入探讨三种Bean(一)--Session Bean [进阶EJB]深入探讨三种Bean(二)--Entity Bean 已经介绍了前两种Bean,今天我们继续介绍第三种Bean--MessageDriven Bean. 要说MessageDriven Bean前就先要介绍一下JMS(Java Message Service),JMS是Java消息服务,它是一个与具体平台无关的API(Application Program Interface 应用程序接口),是

【进阶EJB】深入探讨三种Bean(二)——Entity Bean

通过上一篇文章,我们介绍了[进阶EJB]深入探讨三种Bean(一)--Session Bean,这篇文章继续介绍EJB的三种Bean,今天我们重点介绍一下Entity Bean. Entity Bean,通过名字我们就知道是实体Bean是存放数据的.Entity Bean是持久化的数据组件,代表持久存储的商业实体对象.通常情况下,每个Entity Bean对应于关系数据库中的单张表,Entity Bean的单个实例对应于表中的某一条数据.上篇文章中说的Session Bean可作为Entity

【进阶EJB】问你EJB知多少?

EJB是Enterprice Java Beans的简称,即企业Java组件,是一个用于分布式业务应用标准服务端组件模型(这里强调是服务端组件模型,后面我们将会说一下为什么是服务端而不是客户端),是一组用java语言编写的包含字段和方法的代码体,而这些代码的核心任务就是实现纯粹的业务逻辑. 采用Enterprice Java Beans架构编写的应用是可伸的.事务性的.多用户安全的,可以一次编写这些应用,然后部署在任何支持Enterprice Java Beans规范的服务器平台,如JBoss.

【进阶EJB】深入探讨三种Bean(一)——Session Bean

接着,我们继续EJB的学习.经过前两篇博客的介绍,我想大家已经对EJB有了一个初步的认识.但是大家想过没有,我们为什么要用EJB呢? why EJB? 其中一个很重要的原因就是分布式!所谓分布式,就是分布式对象之间相互协作,完成特定的业务功能.通俗一点来说,就是我们不是把事情交给一个人去做,而是把事情划分一下,交给多个人去处理,最后把多个人处理的结果综合在一起得到最终的结果.与此同时,分布式对象之间能够实现分布透明性,亦或是位置透明性,即在客户端代码中无需指定分布式对象的位置:而且分布式对象之间

运维的等级进阶(转知乎)

0. 熟悉常见硬件配置,了解常见硬件体系1. 会搭建常见服务.理解服务工作原理2. 精通系统工作原理(到这一步已经很少有人能做到了,能过滤掉 80%)3. 熟悉多种发行版本,RedHat 系(Fedora , CentOS).Debian 系(Ubuntu).Gentoo 系(LFS,Arch)4. 熟练的脚本开发 ,Perl,Python,Shell(三选二,或者都会).自动化技术.---- 第一梯度结束 ----5. 集群化的管理思维方式 ,可以通过 Puppet ,脚本等等类似工具配合.6

EJB invocations from a remote client using JNDI

本文解释了如何从远程客户端通过调用ejb的JNDI API首先查找bean代理,然后调用代理. 部署环境为Jboss Eap 6.3,首先部署ejbs到jboss服务器中 客户端实现 创建一个java项目,引入jboss-client.jar,该包在jboss\bin\client位置获取,用于获取jbossEAP中的JNDI上下文. 然后在代码最外层(src下),添加配置属性文件jboss-ejb-client.properties,该文件用于致命如何简历服务端的远程配置  jboss-ejb

JNDI全面总结

JNDI全面总结原理: 在DataSource中事先建立多个数据库连接,保存在数据库连接池中.当程序访问数据库时,只用从连接池中取空闲状态的数据库连接即可,访问结束,销毁资源,数据库连接重新回到连接池,这与每次去直接访问数据库相比,会节省大量时间和资源. JNDI( Java Naming and Directory Interface ),是Java平台的一个标准扩展,提供了一组接口.类和关于命名空间的概念.如同其它很多Java技术一样,JDNI是provider-based的技术,暴露了一个

JNDI 笔记

原理:         在DataSource中事先建立多个数据库连接,保存在数据库连接池中.当程序访问数据库时,只用从连接池中取空闲状态的数据库连接即可,访问结束,销毁资源,数据库连接重新回到连接池,这与每次去直接访问数据库相比,会节省大量时间和资源.         JNDI( Java Naming and Directory Interface ),是Java平台的一个标准扩展,提供了一组接口.类和关于命名空间的概念.如同其它很多Java技术一样,JDNI是provider-based的

EJB 教程推荐

EJB教程 EJB概述 EJB创建应用 EJB无状态Bean EJB有状态会话Bean EJB持久性 EJB消息驱动Bean EJB注解 EJB回调 EJB定时器服务 EJB依赖注入 EJB拦截器 EJB嵌入对象 EJB Blobs/Clobs EJB事务管理 EJB安全 EJB JNDI绑定 EJB实体关系 EJB访问数据库 EJB查询语言 EJB web服务 EJB封装应用