JNDI 是一种方便的方式,应用程序可以方便地表示“我需要资源 X”,容器(例如 Tomcat)可以方便地表示“资源 X 可用,请查看这里或那里实际配置 X 的位置”。
例如,您可以使用上述机制来避免在代码中硬编码数据库属性。您可以通过配置文件来实现相同的目的,但某些上下文(例如:.war文件)配置文件在重新部署之间不会保留,因此它们不是一个选项。
绑定到 JNDI 的好例子是数据库数据源、对 SMTP 电子邮件服务器的引用、安全领域等等。
将 JNDI 视为一个HashMap,其中键是 a String,值是具体对象或HashMap具有相同结构的另一个对象。因此,找到像这样的值jndi://a/b将解决进入顶级映射,找到键a并期望它的值是另一个映射。然后b将在该子映射中查找键并将相关值返回给用户。