【问题标题】:How to configure Tomcat to Not use Database Connection Pooling如何将 Tomcat 配置为不使用数据库连接池
【发布时间】: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>

【问题讨论】:

    标签: mysql tomcat jdbc


    【解决方案1】:

    没有什么可以阻止您建立自己的连接并使用它们。但是,我认为您缺少使连接验证正常工作的配置。当一个连接被测试并发现是坏的时,它应该在池为您提供连接之前被一个新的替换。我认为您缺少在测试连接时将使用的validationQuery。查看https://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html 的文档,并查看为验证工作提供必要的值。尝试 testOnBorrow 和 validationQuery 以便每次连接时都会在返回之前对其进行验证。此外,您似乎根据您的使用频率设置了太多的连接。调整应该有助于避免保持不必要的连接打开。

    【讨论】:

    • 我不想绕过tomcat db连接的东西我只想配置它,以便每次发出请求时都会创建一个新连接,不清楚这是否可能但我会尝试设置验证查询你可能就在那儿。
    • @PaulTaylor 我认为标题让我失望了,以为您试图不使用池。
    • 对不起,我的意思是我不想让 tomcat 连接数据库连接,无论如何我做了描述的更改,但它还没有失败,所以手指交叉。
    • 我还在工作。我认为关键是您所说的需要验证查询,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 2013-08-06
    • 1970-01-01
    • 2015-07-29
    相关资源
    最近更新 更多