Java 中的 JNDI 是什么

17 Mar 2025 | 4 分钟阅读

Java编程语言使用的接口名为Java Naming and Directory Interface (JNDI)。它是一个API(应用程序编程接口),用于与服务器通信并使用命名约定从数据库中获取文件。一个单词或一个短语都可以作为命名约定。

它也可以添加到套接字中,以便使用传输平面文件或数据文件的服务器进行项目开发,从而执行套接字编程。在拥有大量目录的浏览器中,它也可以在网页上使用。使用Java编程语言,JNDI为Java用户提供了搜索Java对象的能力。

Java接口中JNDI的架构

服务提供商接口(SPI),它由API和称为JNDI的接口组成。

What is JNDI in Java

JNDI在架构中显示为一系列不同的目录。如本图所示,Java程序与JNDI架构之间存在连接。由于该接口用于连接多个目录,因此其层次结构表明JNDI API在其上方。以下列出了一些目录服务。

  • 域名服务
  • 轻量级目录访问协议。
  • Java中的远程方法调用

JNDI SPI与上述目录连接,创建一个具有JNDI实现选项的平台。

JNDI包

在Java中,JNDI SPI专门由五个包使用。其中一些包使用javax.naming语言。在名为javax.naming 的包中,有用于名称服务访问的类和接口。Lookup、list Bindings和Name是可用的函数中的一些。

Java.naming.directory是第二个。此包是Java.naming目录的更高级版本,有助于以对象形式获取数据。java. Naming. event 和 Java. naming. spi 包是另外两个例子。

此外,JNDI是三个最新的Java技术中的关键组成部分。它们如下:

  • Java数据库连接(JDBC)包
  • Java消息服务(JMS)
  • 企业JavaBean(EJB)

在Java编程语言中,有两个函数称为bind()和lookup(),分别用于在目录中命名对象和查找它们。

Context.bind("name", object)

在这种情况下,可以通过更改名称将任何名称赋予目录中的当前对象。在此bind函数示例中,已设置了对象的名称。

Object hello= Context.lookup("name")

在此函数中,hello对象搜索目录中的项目名称。根据支持的目录类型,还会使用不同类型的序列化或非序列化数据。

Java中JNDI接口的示例

该程序通过菜单系统运行,要求用户输入本金金额,然后根据用户的偏好打印单利、复利以及单利和复利之间的差额。

此外,如果用户决定不再使用该程序,程序将终止。开始计算利息的时间为7年,利率固定为8.5%。所有利率均以此计算。

开发一个菜单驱动的应用程序,允许用户输入本金金额并计算单利、复利以及两者之间的绝对差额。

实施

文件名: JndiExample.java

输出

What is JNDI in Java

Java中JNDI接口的优点

JNDI命名服务的优点包括:

  • 使用JNDI API创建程序时,您无需了解应用程序中的数据是如何存储在目录服务中的。
  • 只要资源可从JNDI目录访问,您就可以开发代码以在单台计算机或跨多台系统检索数据。
  • 任何提供JNDI API的编程语言都可以用于创建利用JNDI的程序。
  • 标准化数据库连接的配置。
  • 允许更细粒度地控制数据库连接池设置。(当前密码以明文字符串形式存储)。有关加密数据库密码的更多信息,请参阅Tomcat中加密密码。
  • 允许更细粒度地控制数据库连接池设置。

Java中JNDI接口的局限性

JNDI存在一些限制,并且不幸的是,它并不适合高性能环境。

  • 诸如配置信息之类的数据不适合此范例,因为使用JNDI提供的标准设置机制只能存储特定类型的数据。
  • 该规定不包括事务。
  • 尽管某些实现提供了用于建立到目录服务器的SSL连接的API,但没有内置的安全模型。

下一个主题Java中的回溯