【发布时间】:2011-04-01 21:27:04
【问题描述】:
我可能会说,这是一个相当大的问题。
我正在开发使用 springs BasicDataSource 来设置数据库连接的 Java Web 应用程序。我在本地测试应用程序,它工作得很好......但是,当应用程序在线时,在某些时候与数据库的连接卡住了。我不是在调查连接池,我发现在每个新的 HTTP 请求上,我执行了一些查询,都会创建新的池。据我所知,引入池是为了可重用,而不是在每次涉及新数据库访问时创建。还是我错了?
这是我的 spring 数据源配置:
<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="url"/>
<property name="username" value="username"/>
<property name="password" value="password"/>
<property name="defaultAutoCommit" value="true"/>
<property name="defaultTransactionIsolation" value="1"/>
<property name="initialSize" value="0"/>
<property name="maxActive" value="20"/>
<property name="minIdle" value="0"/>
</bean>
比我配置的:
<bean id="EventDao" class="my.managament.database.class">
<property name="dataSource" ref="dataSource"/>
</bean>
以及处理所有发送到应用程序的 HTTP 请求的 mainPageController
<bean id="mainController" class="my.management.main.controller.class">
在应用程序的其余部分,我使用 gedDatabase() 获取数据库连接,并通过 JDBCTemplate 进行选择。
我哪里错了?
谢谢
【问题讨论】:
-
我不确定您是否要声明正在创建一个新连接,而不是声明每个请求都会创建一个新连接池。如果不是,这确实是一个大问题。我是否可以建议您编辑问题以包括为什么您认为每次请求都会重新创建池。
-
对不起,我以为我很清楚......我试图做的是只创建一个连接,考虑到要创建新池,但也要重用......不是每个创建新请求的请求...在 1000 个请求中,我调用了成千上万个池。
-
如果有任何帮助,我已经实现了这个,就像这里的教程中描述的一样:vogella.de/articles/SpringJDBC/article.html我希望有人遇到同样的问题并设法解决它......或者如果有人有教程这显示了实现这一点的正确方法。
标签: java spring jdbc connection-pooling