JNDI 解决了 Spring 中 ApplicationContext 没有解决的哪个问题?

Posted

技术标签:

【中文标题】JNDI 解决了 Spring 中 ApplicationContext 没有解决的哪个问题?【英文标题】:Which issue does JNDI solve that ApplicationContext does not solve in Spring? 【发布时间】:2012-07-03 17:05:03 【问题描述】:

JNDI 是一种从字符串名称中检索/存储数据或对象的方法。此功能由运行应用程序的容器提供。

ApplicationContext 允许从它们的字符串名称创建和检索 bean。

两者都满足相似的需求。然而,Spring 提供了从 JNDI 检索对象的方法。也可以通过JndiTemplate访问JNDI。

真的需要在 Spring 中使用 JNDI 吗?它解决了ApplicationContext 没有解决的哪个问题?

【问题讨论】:

【参考方案1】:

应用程序上下文不会帮助您查找远程对象。它只会在当前应用程序中查找对象,而不是远程对象。

请参阅以下“Context.PROVIDER_URL”。您可以访问 EJB 或 RMI 或 JMS 等 REMOTE 对象。此外,您还可以访问由 Java EE 容器管理的任何资源,例如 DataSource。

ht.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL,"t3://HOSTNAME:PORT");

【讨论】:

【参考方案2】:

这是范围的问题。 Spring 的范围仅限于您在其容器内的应用程序。 JNDI 是一个全局命名 API,可以插入到许多不同的命名/目录架构中。

【讨论】:

以上是关于JNDI 解决了 Spring 中 ApplicationContext 没有解决的哪个问题?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Spring 测试模拟的 JNDI 数据源?

Spring Boot 报错 o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applica

spring 找不到 JNDI 数据源

将 Spring 数据源绑定到 JNDI

如何在spring框架中解决多数据源的问题

在 Spring Boot 应用程序中查找 JNDI 数据源失败