什么时候默认值为-1的spring事务超时?

问题描述:

这是我的豆什么时候默认值为-1的spring事务超时?

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
     <property name="entityManagerFactory" ref="entityManagerFactory" /> 
      <property name="defaultTimeout" value="400" />    
    </bean> 

春天JpaTransactionManager接口缺省是-1.In我来说,我已经覆盖defaultTimeout 400 sec.So,如果我重写它,然后它会超时指定后defaultTimeout时间。

DataSourceTransactionManager对象上综观代码类

int timeout = determineTimeout(definition); 
      if (timeout != -1) { 
       txObject.getConnectionHolder().setTimeoutInSeconds(timeout); 
      } 


public void setTimeoutInSeconds(int seconds) { 
     setTimeoutInMillis(seconds * 1000); 
     public void setTimeoutInMillis(long millis) { 
     this.deadline = new Date(System.currentTimeMillis() + millis); 
    } 
} 

所以,如果超时值不等于-1,则超时我已指定为多发性由10​​00和一个用于timeout.But,以防我没有重写超时值,那么它将是-1。

因此,默认值为-1时会发生超时。

是否超时当MySql.Data.MySqlClient.MySqlException:超时过期异常被抛出? 有什么建议吗?

当服务器超时时,MySql本身也有它自己的超时。在调试模式下基准测试几个不同的长时间运行的查询,如果您看到异常所用的时间与服务器超时时间相同。