2011-03-13 27 views
2

如何修改Eclipselink JPA 2.0連接重試行爲。 Eclipselink會在每次檢測到連接失敗時自動嘗試將其自身重新連接到數據庫,這會導致擺動ui在連接到數據庫之前沒有任何響應而凍結。 是否有任何解決方案來修改此行爲 即是連接失敗時不重試 請在這個問題上 我有巨大的問題,面臨着幫助它可能引發異常。如何修改Eclipselink JPA 2.0連接重試行爲

我去了throe eclipselink源代碼和谷歌,但我找不到任何解決方案。

回答

4

使用SessionCustomizer可以禁用連接重新連接。

package acme; 
import org.eclipse.persistence.internal.sessions.factories.SessionCustomizer; 
import org.eclipse.persistence.sessions.Session; 
import org.eclipse.persistence.sessions.DatabaseLogin; 

public class EmployeeSessionCustomizer implements SessionCustomizer { 

    public void customize(Sesssion session) { 
     DatabaseLogin login = (DatabaseLogin)session.getDatasourceLogin(); 
     login.setConnectionHealthValidationOnError(false); 
    } 
} 

此定製可通過持久性單元屬性

<property name="eclipselink.session.customizer" value="acme.EmployeeSessionCustomizer"/> 
+0

感謝來設置。如何關於login.setQueryRetryAttemptCount(0); – jawath 2011-03-16 04:26:09

+0

上面也凍結了約2秒的gui!任何進一步的改進都可以完成 – jawath 2011-03-16 04:30:09

+0

當gui凍結時需要堆棧轉儲。 gui有可能被凍結,因爲它是針對持久性單元運行的,而持久性單元正在試圖連接到數據庫?如果是這種情況,那麼您將需要解決連接延遲問題,或者有一個線程用於gui,另一個線程用於持久性工作。或者至少有一個單獨的線程監視數據庫連接,並在數據庫連接之前不允許持續調用。 – 2011-04-07 13:14:50