据我所知,“pre-CDI”EJB和资源注入解决方案(@EJB
,@Resource
和其他人,要清楚)使用JNDI服务来查找容器“已知”的对象通过JNDI注册,然后根据要求注入它们。
bean-discovery-mode
参数(ALL
或ANNOTATED
)来发现需要管理的bean。但是这个过程实际上是如何进行的?运行时扫描......什么? JNDI根本没参与吗?
我觉得我对整个机制有些不对劲......
答案 0 :(得分:1)
在CDI specification中详细描述了bean发现过程。基本上,CDI容器会扫描bean部署档案以查找具有特定注释的类。
JNDI根本没参与。与EJB不同,CDI bean通常不能通过JNDI查找。
只能在java:comp/BeanManager
的名称下查找BeanManager
本身,但这几乎不需要,除非您需要从非托管代码访问托管bean。