2

我正在尝试了解 JNDI,但我无法深入了解。据我了解,JNDI 是一种接口,它使您能够根据某些配置从文件系统中检索对象。

我经常看到DataSource用参数定义的例子, inweb.xml或 as <Resource>in Tomcat。然后,Java 应用程序可以通过资源定义中指定的名称获取此DataSource对象实例。initialContext

但我想了解的是,在后台发生了什么?怎么JVM知道在哪里搜索这些资源?例如,如果在 tomcat 中定义,我想它会以某种方式导出它们。但它怎么JVM知道它应该向 Tomcat 索要它们呢?而且,如果是DataSource,可以从 JNDI 查找中检索实际对象,并使用从资源定义中设置的参数(连接字符串等)... 什么组件设置它们?Tomcat? JVM? 我感到很困惑...

4

1 回答 1

1

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

Tomcat 中的 JNDI 资源配置在各种 XML 文件(server.xml、web.xml、context.xml)中,详情请参阅 Tomcat 文档:http: //tomcat.apache.org/tomcat-7.0-doc/jndi-resources -howto.html。当您进行 JNDI 查找时,Tomcat 服务器知道读取这些文件并将配置的对象提供给您的应用程序。

于 2013-01-25T22:30:46.590 回答