【进阶EJB】JNDI知多少?

本文详细解释了JNDI(Java Naming and Directory Interface)的概念及其在EJB中的应用方式。JNDI作为Java命名系统接口,使得EJB组件能够通过名字查找并获取所需的EJB对象引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   上篇文章我们宏观的介绍了一下何为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的介绍就这么多,如果您有更好的想法欢迎您在下方留言,谢谢!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值