CDI和JNDI服务之间的关系是什么?

3
据我所知,“pre-CDI” EJB 和资源注入解决方案(例如 @EJB@Resource 等)使用 JNDI 服务来定位容器中已注册的对象,并在需要的地方进行注入。
相反,CDI 则依赖于 bean-discovery-mode 参数(ALLANNOTATED)来发现需要被管理的 bean。但是这个过程实际上是如何执行的呢?是对什么进行了运行时扫描?JNDI 是否完全没有参与?
我有一种感觉,好像对整个机制理解有些偏差...

1
JNDI仅用于获取BeanManager。 然后它只会扫描注释类的类路径。 这在https://dev59.com/WHVC5IYBdhLWcg3wixw0中得到了详细解释。 - BalusC
1个回答

2
豆发现过程在CDI规范中详细描述。基本上,CDI容器会扫描具有特定注释的类的bean部署档案。
JNDI根本不涉及。与EJB不同,通常情况下无法通过JNDI查找CDI bean。
只有BeanManager本身可以在java:comp / BeanManager名称下查找,但这几乎从不需要,除非您需要从未受管控的代码访问托管bean。

2
此外,自从CDI 1.1版本以来,有一个CDI实用类,使得在非托管代码中获取BeanManager变得不再必要。 - BalusC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接