【问题标题】:What's the difference between Tomcat JNDI based and Spring/Hibernate DS based connection pooling基于 Tomcat JNDI 和基于 Spring/Hibernate DS 的连接池有什么区别
【发布时间】:2011-01-22 11:29:12
【问题描述】:

我一直在研究连接池选项,但与相同的 Spring/Hibernate 解决方案相比,Tomcat JNDI 连接池方法的区别是什么让我有些不清楚。

虽然可以使用12 来实现池化,但考虑到我们的限制,使用Tomcat 更适合我们使用的特定应用程序。

阅读,有一些建议给just stick with Spring/Hibernate

每种方法之间是否有值得一提的显着差异?其他人对其中一个或另一个(或两者)的个人经验是什么 - 我已经成功使用 Spring/Hibernate 多年了。

【问题讨论】:

  • 我可能错了,但我认为,如果您使用 JNDI 连接池,它将是容器范围的(例如,在多个 Web 应用程序之间共享)。如果您在 Spring 上下文中定义连接池,它将留在您的上下文中(例如,它将是应用程序范围的)。我没有使用过 Tomcat+JNDI 选项,所以我无法给出真正好的建议。

标签: java tomcat jdbc connection-pooling


【解决方案1】:

这两种方法是互补的,而不是相互排斥的。在生产系统中,Spring/Hibernate 之类的会从应用服务器获取对连接池的引用,以javax.sql.DataSource 的形式,通常通过在 JNDI 树上查找。它通常被认为是应用服务器的“工作”来管理连接池及其连接。

请记住,JNDI 只是一个注册共享对象的地方,它本身确实要求任何给定的连接池机制。应用服务器创建和配置池,应用程序(通过 Spring/Hibernate/whatever)使用它。

但是,应用程序自己配置和管理连接池同样有效。不过,这确实意味着应用程序需要做更多的工作,同时减少对应用服务器的依赖。

【讨论】:

  • 很公平,这是有道理的。现在假设我使用基于 Tomcat JNDI 的池化,因此我需要关闭 Spring 中的池化配置,以免在 Tomcat 的 JNDI 池化之上进行池化...?
  • Spring 没有连接池实现,它使用你给它的任何DataSource 对象——如果这恰好是 Tomcat 通过 JNDI 提供的连接池,那就更好了。跨度>
  • 是的,对不起,我的意思是休眠
  • 哦,对了。是的,Hibernate 的连接池仅用于开发用途,不适用于生产系统 - 它在手册中说了很多:docs.jboss.org/hibernate/stable/core/reference/en/html/…
猜你喜欢
  • 2016-04-19
  • 2018-10-03
  • 1970-01-01
  • 2014-06-28
  • 2023-03-20
  • 2013-03-15
  • 1970-01-01
  • 1970-01-01
  • 2017-01-03
相关资源
最近更新 更多