我一直在阅读一篇关于 JNDI 的文章,但我很困惑。
所以,简单地说:
- JNDI就像一个对象容器,每个条目都是一个字符串名称 - 对象对?
- 这些对存储在JVM中吗?例如,在同一台本地机器上,App #1 使用 name 注册了一个数据源对象
"testDS"
,一段时间后,App #2 可以使用 key 获取该数据源对象"testDS"
?但从哪里来?在 JVM 中?
你需要退后一步。在 Java 和 JNDI 之外并且独立于 Java 和 JNDI,还有“目录和命名服务”。这些东西就像 LDAP、DNS 或您的计算机文件系统(想想路径和文件名),它们允许您通过名称和目录访问结构化的东西。
JNDI 是一种 Java API,它允许您使用其中之一,并且无论您使用哪一个,接口都应该大致相同。
The objects you access via JNDI are stored using the Directory and Naming Service, not the JVM directly.
So if you have two JVMs using JNDI to access the same Directory and Naming Service and configured the same, they should access to the same objects. If they are accessing different services, they will not be able to access the same objects regardless of whether it is the same JVM.
考虑一下,当您尝试访问 d:/users/name/text.txt 下的文件时,您只需输入其名称并访问其内容。JNDI 以相同的概念工作,您可以使用名称 JNDI 处理您想要的。
您错过了有关 JNDI 的一些内容。JNDI 是一个应用程序编程接口 (API)。它是一组类,为用 Java 编程语言编写的应用程序提供命名和目录功能。
因此,既然这些类在 JVM 中运行,那么我们可以说,通过使用 JVM,应用程序利用 JNDI 来执行它们的任务。