CDI 和 JNDI 服务有什么关系?

What's the relation between CDI and JNDI service?

据我了解"pre-CDI" EJB 和资源注入解决方案(@EJB@Resource 和其他,要清楚)使用JNDI 服务来定位对象"known" 通过注册 JNDI 到容器中,然后在请求的地方注入它们。

相反,

CDI 依赖于 bean-discovery-mode 参数(ALLANNOTATED)来发现需要管理的 beans。但是这个过程实际上是如何执行的呢?运行时扫描……什么? JNDI根本就没有参与吗?

我觉得我对整个机制有些不对劲...

bean 发现过程在 CDI specification 中有详细描述。基本上,CDI 容器会扫描 bean 部署档案以查找 类 带有特定注释的

根本不涉及JNDI。与 EJB 不同,CDI bean 通常不能通过 JNDI 查找。

只能在 java:comp/BeanManager 的名称下查找 BeanManager 本身,但这几乎从来不需要,除非您需要从非托管代码访问托管 bean。