JavaJNDI内部

JavaJNDI内部,java,datasource,jndi,Java,Datasource,Jndi,我试图理解JNDI,但我无法弄清事情的真相。据我所知,JNDI是一个接口,它使您能够根据某些配置从文件系统检索对象 在web.xml或Tomcat中作为使用参数定义DataSource时,我看到的例子最多。然后,Java应用程序可以通过initialContext和资源定义中指定的名称获取这个DataSourceobejct实例 但我想了解的是,背景中发生了什么?JVM如何知道在哪里搜索这些资源?对于exmaple,如果在tomcat中定义,我想它会以某种方式导出它们。但是JVM如何知道它应该向

我试图理解JNDI,但我无法弄清事情的真相。据我所知,JNDI是一个接口,它使您能够根据某些配置从文件系统检索对象

web.xml
Tomcat
中作为
使用参数定义
DataSource
时,我看到的例子最多。然后,Java应用程序可以通过
initialContext
和资源定义中指定的名称获取这个
DataSource
obejct实例


但我想了解的是,背景中发生了什么?
JVM
如何知道在哪里搜索这些资源?对于exmaple,如果在tomcat中定义,我想它会以某种方式导出它们。但是
JVM
如何知道它应该向Tomcat请求它们呢?此外,对于
数据源
,可以从JNDI查找中检索实际对象,并从资源定义(连接字符串等)设置参数。。。组件设置了什么<代码>Tomcat<代码>JVM?我很困惑

在Java代码中使用JNDI资源查找允许应用程序不知道配置详细信息,例如SMTP服务器的地址或数据库的用户名/密码。相反,您需要为每个资源确定一个名称,部署应用程序的人员必须正确配置该名称。这种环境特定设置的分离使应用程序更加可移植,这通常是一件好事

Tomcat中的JNDI资源在各种XML文件(server.XML、web.XML、context.XML)中配置,有关详细信息,请参阅Tomcat文档:。Tomcat服务器知道在执行JNDI查找时读取这些文件并向应用程序提供配置的对象