2011-03-13 3 views
2

Eclipselink JPA 2.0 연결 재 시도 동작을 수정하려면 다음을 수행하십시오. Eclipselink는 연결 실패를 감지 할 때마다 자동으로 데이터베이스에 다시 연결하려고 시도합니다. 이로 인해 스윙 UI가 데이터베이스에 연결될 때까지 아무런 응답없이 고정됩니다. 이 문제를 해결할 수있는 해결 방법이 있습니까 다시 시도하지 않고 연결이 끊어 질 때 예외가 발생할 수 있습니다. 이 문제에 대한 도움을 받으십시오. 큰 문제가 있습니다.Eclipselink JPA 2.0 연결 재시도 동작을 수정하는 방법

나는 eclipselink 소스 코드와 google에 갔지만 어떤 해결책도 찾을 수 없었다.

답변

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

+0

도 약 2 초 동안 GUI를 고정시킵니다! 더 이상 개선이 이루어질 수 있습니다. – jawath

+0

GUI가 멈 추면 스택 덤프가 걸릴 수 있습니다. Persistence Unit에 대해 작동하고 Persistence Unit이 데이터베이스에 연결하려고 시도하기 때문에 gui가 동결 될 수 있습니까? 이 경우 연결 지연을 해결하거나 GUI에 하나의 스레드를 사용하고 지속성 작업을 위해 다른 스레드를 사용해야합니다. 또는 최소한 데이터베이스 연결을 모니터링하고 데이터베이스가 연결될 때까지 지속성 호출을 허용하지 않는 별도의 스레드가 있어야합니다. –

관련 문제