JNDI的目的是什么

2022-08-31 10:32:59

如果可能的话,您如何通过示例来实现JNDI的用法?


答案 1

JNDI 是 Java 命名和目录接口。它用于分离应用程序开发人员和应用程序部署人员的关注点。在编写依赖于数据库的应用程序时,无需担心连接到该数据库的用户名或密码。JNDI 允许开发人员为数据库指定一个名称,并依靠部署程序将该名称映射到数据库的实际实例。

例如,如果您正在编写在 Java EE 容器中运行的代码,则可以编写以下内容来获取 JNDI 名称为“Database”的数据源:


DataSource dataSource = null;
try
{
    Context context = new InitialContext();
    dataSource = (DataSource) context.lookup("Database");
}
catch (NamingException e)
{
    // Couldn't find the data source: give up
}

请注意,此处没有关于数据库驱动程序、用户名或密码的内容。这是在容器内配置的。

JNDI不仅限于数据库(JDBC);各种服务都可以被命名。有关更多详细信息,您应该查看Oracle的教程


答案 2

JNDI 是一种非常强大的机制,用于组织配置信息以及通过使用 .在 JNDI 中,您可以查找和侦听任何对象(而不仅仅是 s),前提是您的 JNDI 服务提供者支持它。EventContextDataSource

当然,唯一的问题是实际上有一个JNDI服务提供商;这样做的好处是,它非常容易自己滚动。毕竟,您可以使用JavaBeans将任何Java实例编码为:您不需要依赖在应用程序服务器中运行!XMLXMLEncoderXMLDecoder

那么这和拥有配置文件有什么区别呢?好吧,它可以更干净,因为您的所有应用程序都可以从同一位置获取其配置。如果它们需要共享配置信息(例如数据库位置),那么可以在 JNDI 中定义一次。假设您移动了数据库服务器:您不需要记住包含该位置的大量配置文件。你只需要去一个地方:JNDI。


推荐