2014-10-20 86 views
1

這是我的豆什麼時候默認值爲-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:超時過期異常被拋出? 有什麼建議嗎?

回答

0

當服務器超時時,MySql本身也有它自己的超時。在調試模式下基準測試幾個不同的長時間運行的查詢,如果您看到異常所用的時間與服務器超時時間相同。