我来自完整的应用服务器后台,并考虑在轻量级嵌入式服务器(如Jetty)上运行应用程序。
我总是使用JNDI查找数据库连接之类的连接池,但我想知道这是否是轻量级案例的最佳方法。看来,如果我使用JNDI,我不会得到任何有益的东西,但我确实在不同的容器配置方式和设置的额外复杂性方面存在差异。
我可以看到的替代方案是在我的应用中嵌入连接池实现。当我使用Spring时,这种方法需要的配置少一些,所需的配置都在一个地方(能够查找简单的名称 - 值属性,如果需要,可以从其他地方查找连接详细信息),并且似乎无论如何都可以工作上下文(dev / test / live)以及我部署的容器。
我在这里遗漏了什么吗?如果我在应用程序中嵌入应用程序服务器,我还应该使用JNDI吗?如果是这样,为什么?
答案 0 :(得分:2)
这完全取决于你的情况。
JNDI(对我而言)是一种机制,用于实现部署和部署位置之间的分离。这样,当您部署时,您假设某些资源可用,并且它们将被标记为X,Y和Z. JNDI是以基本统一的方式提供这些资源的简单(有点)机制。如果您可能有多个不同的受支持数据库,并且您想要针对某些数据源编写所有代码...您将需要将数据源配置为某处并且jndi提供了一些地方来执行此操作。如果你使用某种工具来设置jndi是一个很棒的工具,那就太好了,使用它。
在嵌入式情况下,情况确实没有改变,仍然需要在某处设置。但是,在嵌入式应用程序的过程中,您发现自己编写了jndi方程的两个方面,然后自问是否需要这个额外的抽象层。
如果你只是使用jndi,因为这是其他人所做的,但你只是真正使用postgres而你只需要那个数据库驱动程序......那么你的应用程序的额外复杂层是什么意思。如果您真的喜欢弹簧和弹簧,那么您可以更轻松地配置所需的零件并将其注入您需要的地方......不要使用jndi。
fwiw,听起来你不再需要jndi了:))