看看web上的连接池示例,它们都是在每个servlet的基础上实现连接池。因此,每个servlet都有自己的数据库连接池。我的问题是,为什么这比数据库连接的全球池更可取?由于全局池似乎比每个servlet池更有效率。
另外,因为我正在考虑实现这样一个池。有没有办法在servlet之前初始化一个类(我使用的是jetty btw)?我刚刚开始servlet开发,但这似乎对其他事情也很有用,比如配置。否则,我将使用某种类似于单例的模式。
发布于 2009-10-10 15:50:46
1)我要说的是,标准实践是在上下文描述符中将连接池设置为JNDI资源,这不是每个servlet都要做的事情。
2)你需要实现并声明一个ServletContextListener。
发布于 2009-10-10 16:18:38
老实说,我真的不知道你在说什么。也许你可以提供你看过的样品。
对我来说,“真正的”连接池应该是完全与Servlet无关的,并且在每个Servlet的基础上使用连接池是一个更多的使用细节(这是一个糟糕的细节)。只需查看DBCP或c3p0,即可获得可在“容器外”上下文中使用的连接池的良好示例。
还要注意,大多数(如果不是全部)容器实际上都提供了自己的连接池实现(有时基于前面提到的示例),我看不出有什么好的理由不使用它们。使用它们的标准方法是使用JDNI命名服务注册一个DataSource。如今,DataSouce大部分时间都是通过IoC注入的。在过去,经常使用Service Locator模式。
以Jetty为例,请查看文档中的DataSource Examples。
发布于 2009-10-10 15:48:49
我的问题是,为什么这比数据库连接的全局池更可取?
不是的!所有servlet应该共享池中的连接!
也是如此,因为我正在考虑实现这样一个池。
已经有一些方法(Spring IoC)可以注入容器管理的池化连接。
。有没有办法在servlet之前初始化一个类(我使用的是jetty btw)?
IoC容器可以引导每个资源和servlet!
您可以通过注册一个Spring和一个包含映射和servlet的dispatcherServlet作为bean定义来连接servlet!
如果只想插入连接并保留servlet的其余部分不变,请使用以下定义:
<bean name="simpleServletHandlerAdapter"
class="org.springframework.web.servlet.handler.SimpleServletHandlerAdapter" />
<bean name="simpleServletPostProcessor"
class="org.springframework.web.servlet.handler.SimpleServletPostProcessor" />https://stackoverflow.com/questions/1548249
复制相似问题