什么时候默认值为-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,则超时我已指定为多发性由1000和一个用于timeout.But,以防我没有重写超时值,那么它将是-1。
因此,默认值为-1时会发生超时。
是否超时当MySql.Data.MySqlClient.MySqlException:超时过期异常被抛出? 有什么建议吗?
答
当服务器超时时,MySql本身也有它自己的超时。在调试模式下基准测试几个不同的长时间运行的查询,如果您看到异常所用的时间与服务器超时时间相同。