Java servlet和数据库连接池

Java servlet和数据库连接池,java,web-applications,servlets,jetty,connection-pooling,Java,Web Applications,Servlets,Jetty,Connection Pooling,只要看看web上的连接池示例,它们都是基于每个servlet实现连接池的。因此,每个servlet都有自己的数据库连接池。我的问题是,为什么这比全局数据库连接池更可取?因为全局池似乎比每个servlet池更有效 而且,因为我正在考虑实施这样一个池。有没有办法在servlet之前初始化类(我使用的是jetty btw)?我刚刚开始servlet开发,但这对于配置等其他事情似乎也很有用。否则,我将使用某种类似单例的模式。每个servlet都有一个连接池的一个优点是,如果其中一个servlet行为不当

只要看看web上的连接池示例,它们都是基于每个servlet实现连接池的。因此,每个servlet都有自己的数据库连接池。我的问题是,为什么这比全局数据库连接池更可取?因为全局池似乎比每个servlet池更有效


而且,因为我正在考虑实施这样一个池。有没有办法在servlet之前初始化类(我使用的是jetty btw)?我刚刚开始servlet开发,但这对于配置等其他事情似乎也很有用。否则,我将使用某种类似单例的模式。

每个servlet都有一个连接池的一个优点是,如果其中一个servlet行为不当并使用了其所有可用的连接,那么其他servlet仍将在其各自的池中有可用的连接。这将提高应用程序的稳定性

我的问题是,为什么这比全局数据库连接池更可取

不是!所有servlet都应该共享池中的连接

而且,因为我正在考虑实施这样一个池

已经有方法(SpringIOC)注入由容器管理的池连接

。有没有办法在servlet之前初始化类(我使用的是jetty btw)

IoC容器可以引导每个资源和servlet

您可以通过注册一个spring dispatcherServlet和一个包含映射和servlet的xml作为bean定义来连接spring servlet

如果只希望注入连接并保持servlet的其余部分不变,请使用以下定义:

<bean name="simpleServletHandlerAdapter"
class="org.springframework.web.servlet.handler.SimpleServletHandlerAdapter" />


<bean name="simpleServletPostProcessor"
class="org.springframework.web.servlet.handler.SimpleServletPostProcessor" />

1)我想说,标准做法是在上下文描述符中将连接池设置为JNDI资源,这不是每个servlet都要做的事情


2) 您需要实现并声明一个。

老实说,我真的不知道您在说什么。也许你可以提供你看过的样品

对我来说,“真正的”连接池应该是完全不可知的,在每个Servlet的基础上使用连接池更像是一个使用细节(在我看来,这是一个糟糕的细节)。只需查看或以获得在“容器外”上下文中可能使用的连接池的良好示例

还要注意的是,大多数(如果不是全部的话)容器实际上提供了它们自己的连接池实现(有时基于前面提到的示例),我看不出有什么好的理由不使用它们。使用它们的标准方法是向JDNI命名服务注册
数据源。如今,
DataSouce
大部分时间是通过IoC注入的。在过去,人们经常使用这种模式


对于Jetty,请查看文档。

web容器经常使用JNDI提供ConnectionFactory(或类似),JNDI使用连接池,但配置它的方式并不标准化


请查看如何使用Jetty。

错误行为会造成损坏!如果应用程序是单线程的(servlet),那么连接池有什么好处呢?如果应用程序只有一个线程,那么进行数据库连接池就没有意义了。我不知道你在问什么。发布的链接现在已经死了。