Mysql 如何将Tomcat配置为不使用数据库连接池

Mysql 如何将Tomcat配置为不使用数据库连接池,mysql,tomcat,jdbc,Mysql,Tomcat,Jdbc,如何将Tomcat配置为不使用数据库连接池 我之所以想这样做,是因为我有一个对mysql数据库进行很少调用的应用程序,通常在24小时内调用不到10次,有些调用在检索连接时失败。看起来Mysql有时会放弃连接,因为它已经闲置了很长时间而没有通知数据库池管理员 值得注意的是,我有另一个应用程序,它向完全相同的数据库发出数千个请求,而且从来不会失败,因此我确信这个问题与很少调用数据库有关。Mysql可能是问题的一部分,但更新到Postgres将是一项比我现在要承担的任务更大的任务 因此,我尝试将con

如何将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>

所以现在我想禁用池,这样每次都能获得一个新的连接,但我不知道怎么做,我看了一下

但一切似乎都以数据库池为中心

尝试的解决方案

所以我试着回答这个建议,看看接下来几天会发生什么

     <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>


任何东西都不应阻止您建立自己的连接并使用它们。但是,我认为您缺少使连接验证正常工作的配置。当一个连接被测试并发现是坏的,它应该在池给你连接之前被一个新的替换掉。我认为您缺少在测试连接时使用的validationQuery。查看上的文档,并查看如何为验证工作提供必要的值。尝试testOnBorrow和validationQuery,以便每次连接时,它都会在返回之前对其进行验证。此外,根据您的使用频率,您似乎设置了太多的连接。调整有助于避免不必要的连接保持打开状态。

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

我不想绕过tomcat db连接功能,我只想对其进行配置,使其在每次发出请求时都创建一个新连接,不清楚这是否可行,但我会尝试设置validationQuery您可能就在那里。@PaulTaylor我想这个标题把我给甩了,还以为您试图不使用池。对不起,我的意思是我不想让tomcat池db连接,不管怎样,我做了描述的更改,它还没有失败,所以祈祷成功。我会工作的。我想关键是你说的需要validationQuery,谢谢我不想绕过tomcat db连接我只想配置它,这样每次发出请求时它都会创建一个新连接,不清楚这是否可行,但我会尝试设置validationQuery您可能就在那里。@PaulTaylor我想这个标题把我给甩了,还以为您试图不使用池。对不起,我的意思是我不想让tomcat池db连接,不管怎样,我做了描述的更改,它还没有失败,所以祈祷成功。我会工作的。我想关键是你说需要验证查询,谢谢