【问题标题】:Mysql not reconnecting with JNDI Tomcat 6Mysql没有与JNDI Tomcat 6重新连接
【发布时间】:2010-12-23 00:00:58
【问题描述】:

我正在使用 JNDI 和 Tomcat6 来管理 Mysql 连接,我的 Catalina/domain.com/ROOT.xml 有:

<Resource name="jdbc/db" auth="Container" type="javax.sql.DataSource"
   username="db1" password="somepass" driverClassName="com.mysql.jdbc.Driver"             
   url="jdbc:mysql://localhost:3306/db?autoReconnect=true" maxActive="15" maxIdle="3"  
   maxWait="5000" removeAbandoned="true" removeAbandonedTimeout="20" />

我虽然 autoReconnect 将完成重新连接到数据库的工作,但它没有,在大约 8 小时不活动后,我的应用程序吐出失去与数据库的连接错误。有什么想法吗?

谢谢,费多尔

【问题讨论】:

    标签: java mysql tomcat jdbc jndi


    【解决方案1】:

    不要使用autoReconnect。它和it's been deprecated 有问题。例如,当线程正在使用连接时,您可能会发生断开/重新连接事件。相反,我会让您的连接池测试与testOnBorrow 的连接,然后再将它们传递给应用程序。这是一个例子:

    <Resource name="jdbc/db"
              auth="Container"
              type="javax.sql.DataSource"
              username="db1"
              password="somepass"
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/db"
              maxActive="15"
              maxIdle="3"
              maxWait="5000"
              removeAbandoned="true"
              removeAbandonedTimeout="20"
              logAbandoned="true"
              factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
              validationQuery="select 1"
              minEvictableIdleTimeMillis="3600000"
              timeBetweenEvictionRunsMillis="1800000"
              numTestsPerEvictionRun="10"
              testWhileIdle="true"
              testOnBorrow="true"
              testOnReturn="false"
              />
    

    【讨论】:

    猜你喜欢
    • 2013-12-21
    • 2016-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 2011-06-30
    • 1970-01-01
    • 2011-03-20
    相关资源
    最近更新 更多