gpt4 book ai didi

java - 嵌入应用程序服务器时使用 JNDI 还是不使用 JNDI?

转载 作者:行者123 更新时间:2023-11-30 09:35:52 24 4
gpt4 key购买 nike

我有完整的应用服务器背景,并考虑在 Jetty 等轻量级嵌入式服务器上运行应用。

我一直使用 JNDI 来查找连接池以查找数据库连接之类的东西,但我想知道这是否是轻量级案例的最佳方法。似乎如果我使用 JNDI 我不会得到任何好处,但我确实会在不同容器的配置方式和设置的额外复杂性方面有所不同。

我看到的替代方案是在我的应用程序中嵌入一个连接池实现。当我使用 Spring 时,这种方法需要的配置少一些,需要的配置都在一个地方(如果需要,可以从其他地方查找简单的名称-值属性,例如连接详细信息)并且似乎无论如何都可以工作上下文 (dev/test/live) 和我部署的容器。

我是不是漏掉了什么?如果我在我的应用程序中嵌入了一个应用程序服务器,我还应该使用 JNDI 吗?如果是,为什么?

最佳答案

这完全取决于您的情况。

JNDI(对我而言)是一种在部署内容和部署位置之间实现解耦的机制。这样,当您部署时,您假设某些资源可用,并且它们将被标记为 X、Y 和 Z。JNDI 是一种以基本统一的方式提供这些资源的简单(有点)机制。如果您可能有多个不同的受支持数据库,并且您想针对某个数据源编写所有代码...您将需要在某处 配置该数据源,而 jndi 提供了一些地方来执行此操作。如果您使用某种工具可以轻而易举地设置 jndi,那么很好,请使用它。

在嵌入式情况下,情况确实没有改变,仍然需要在某处进行设置。然而,在您的嵌入式应用程序的过程中,您发现自己编写了 jndi 等式的两边,然后问问自己是否需要这个额外的抽象层。

如果您只是使用 jndi,因为其他人都这样做,但您实际上只使用 postgres,并且您只需要该数据库驱动程序……那么为您的应用程序增加额外的复杂性层的意义何在。如果您真的喜欢 spring 并且 spring 为您提供了一种更简单的方法来配置您需要的点点滴滴并将其注入(inject)到您需要的地方......不要使用 jndi。

fwiw,听起来您不再需要 jndi :)

关于java - 嵌入应用程序服务器时使用 JNDI 还是不使用 JNDI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11085926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com