【发布时间】:2017-06-16 03:58:09
【问题描述】:
如何将 Tomcat 配置为不使用数据库连接池?
我想这样做是因为我有一个应用程序很少调用 mysql 数据库,通常在 24 小时内少于 10 次,并且一些调用在检索连接时失败。似乎Mysql有时会放弃连接,因为它已经空闲了很长时间而没有告诉数据库池。
值得注意的是,我有另一个应用程序向完全相同的数据库发出数千个请求,并且从未失败,因此我确信该问题与对数据库的调用很少有关。 Mysql 可能是问题的一部分,但更新到 Postgres 将是一项比我现在想要提交的更大的任务。
所以我尝试将 context.xml 配置为 testWhileIdle,但仍然失败
<Context path="/store" privileged="true">
<Resource name="jdbc/myapp" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="100" maxWait="10000" testWhileIdle="true"
username="usrnm" password="pwd" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/myapp"/>
</Context>
所以现在我想禁用池,以便每次都能获得一个新连接,但我不知道该怎么做,我看过
https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html#Plain_Ol%27_Java
但一切似乎都以数据库池为中心。
尝试的解决方案
所以我在回答中尝试了建议,看看接下来几天会发生什么
<Context path="/store" privileged="true">
<Resource name="jdbc/myapp" auth="Container" type="javax.sql.DataSource"
maxActive="10" maxIdle="10"
testWhileIdle="true" validationQuery="select 1" validationQueryTimeout="5"
username="usrnm" password="pwd"
driverClassName="com.mysql.jdbc.Driver" testOnBorrow="true"
url="jdbc:mysql://localhost:3306/myapp"/>
</Context>
【问题讨论】: