시간 제한과 함께 Spring을 사용하여 보안되는 GWT를 사용하는 웹 사이트가 있습니다 ... 한 시간을 들여 봅시다. 이 프로세스의 일부로 세션이 만료되기 5 분 전에 클라이언트 측 세션 시간 초과 경고를 구현하려고합니다.비동기 RPC가 만들어 질 때마다 GWT 메서드를 호출하는 방법
쿠키를 사용하는 Javascript를 작성했습니다. 타이머는 초기에 타이머를 설정하는 데 사용되며 기본 메서드를 통해 GWT에서 사용할 수있는 타이머를 다시 설정하는 메서드가 있습니다. 초기 타이머가 더 이상 비동기 호출의 어떤 종류를 사용 후 정확한 있도록 RPC가 서버에 대해 때마다
function resetSessionTimeout() { //update the cookie for the expected timeout
var date = new Date();
var timeoutTime = 55 * 60 * 1000;
date.setTime(date.getTime() + timeoutTime);
createCookie('timeout', date.getTime(), 1);
}
, 서버 기반의 세션 타임 아웃은, 상쾌하지 않습니다. 위의 함수는 클라이언트 측을 올바른 시간 초과 시간으로 업데이트합니다.
확실하게 작동하는 옵션은 $wnd.resetSessionTimeout()
을 에서 비동기 호출을 가진 모든 단일 메서드를 호출하는 네이티브 void를 호출하는 것입니다. 그러나이 방법은 많으며 확장 성이 좋지 않으며 구현이 잘못되었습니다.
RPC가 만들어지고 수신 될 때마다 관찰 할 클라이언트 부분을 설정 한 다음 각 메소드가 아니라 MVP 레벨 내에 기본 void를 넣을 수있는 방법이 있습니까? 즉 RPC 관찰자 또는 리스너? 이제 MyCallback 모든 AsyncCallback 객체를 대체 할 수
public class MyCallback<T> implements AsyncCallback<T> {
public MyCallback() {
}
@Override
public void onFailure(T result) {
/*
* Show standard error message. You can override it
* with a more specific message where necessary.
*/
}
@Override
public void onSuccess(T result) {
execute(result);
// Call your timer, etc.
}
protected void execute(T result) {
// Override this method when making calls.
}
}
:
와우, 나는 그렇게 생각하지 않았다. onSuccess 대신 실행을 재정의하기 위해 모든 것을 다시 배선하는 데는 시간이 걸리지 만 처리가 크게 향상됩니다. 감사! 다른 대안은 생각합니다. 생성자에서 업데이트를 호출 한 다음 onFailure가 타이머를 재설정하도록하는 것입니다. – Compass