java - Mysql 没有重新连接 JNDI Tomcat 6

标签 java mysql tomcat jdbc jndi

我使用 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 小时不活动后,我的应用程序吐出丢失与数据库的连接错误。有什么想法吗?

谢谢,费多尔

最佳答案

不要使用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"
          />

关于java - Mysql 没有重新连接 JNDI Tomcat 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1842755/

相关文章:

java - 数据集从 csv 文件加载,其模式要求将字段视为不可为空。然后,printSchema() 描述可为空的字段

mysql 返回一小时的订单量,在列日期

mysql - SQL 连接以将主表中的值与子表值连接为一行中的不同列

apache - HTTP ://localhost:8080/Access Error: 404 -- Not Found Cannot locate document:/

java - 将条件移动到类时出错

java - 如何跟踪 "dtrace style"中的java应用程序?

jsp - 在tomcat文件夹外显示图片

java - 我可以将额外的 Spring 配置文件动态加载到现有的 WebApplicationContext 中吗?

java - HikariCp 无法连接到 DB2 数据库

php - 我正在尝试在 Laravel 中混合数据透视表值