启用Tomcat连接池

时间:2017-08-02 06:20:45

标签: java mysql spring hibernate tomcat

我们使用tomcat资源连接到我们的MySQL 5.7数据库,连接字符串在下面给出,

    <Resource name="jdbc/bm" 
           type="javax.sql.DataSource"  
           factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
           initialSize="34"
           maxActive="500"   
           maxIdle="5"  
           username="root" 
           testWhileIdle="true"  
           removeAbandonedTimeout="60"  
           maxWait="-1" 
           removeAbandoned="true" 
           logAbandoned="true"
           validationQuery="select 1" 
           validationInterval="60000"
           driverClassName="com.mysql.jdbc.Driver" 
           password="XXXXXX" 
           minEvictableIdleTimeMillis="30000" 
           timeBetweenEvictionRunsMillis="120000"
           testOnBorrow="true"             
           url="TESTURL"/>

虽然这很好用,但我们开始面临操作系统级别无端口问题。因此我们切换到tomcat连接池,

<Resource name="jdbc/bm" 
           type="javax.sql.DataSource"  
            **factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"** 
       initialSize="34"
           maxActive="500"   
           maxIdle="5"  
           username="root" 
           testWhileIdle="true"  
           removeAbandonedTimeout="60"  
           maxWait="-1" 
           removeAbandoned="true" 
           logAbandoned="true"
   validationQuery="select 1" 
           validationInterval="60000"
           driverClassName="com.mysql.jdbc.Driver" 
           minEvictableIdleTimeMillis="30000" 
           timeBetweenEvictionRunsMillis="120000"
           testOnBorrow="true"             
           url="URL/>

由于我们介绍了这一点,我们经常在日志中收到以下错误,

 2017-Aug-02 01:23:48,426 ERROR IRWorkflowService:3446 - ^M
  org.springframework.dao.CannotAcquireLockException: Hibernate 
   operation: Could not execute JDBC batch update; SQL

我们正在使用基于SPRING-HIBERNATE的连接设置。我们检查了所有可能死锁的场景代码,但没有得到任何线索。

修改

我确实读过这个possible duplicate,但它们似乎并不相似。即使在未显示锁定在show engine InnoDB状态的表上,我也会收到此错误。例如,show engine InnoDB状态中显示的锁在Y表上显示一个在X时间锁定的表,但该异常比X时间更新并且在另一个表上。

0 个答案:

没有答案