2012-04-23 4 views
9

많은 지원 사례를 통해 GWT 기반 응용 프로그램에서 가장 큰 문제가 발생한다는 사실을 사용자가 한 번에 몇 주 동안 공개하지 않는 경우가 있습니다. 즉, 매주 또는 2 주마다 RPC 스텁이 동기화되지 않고 자동 예외가 발생하여 사이트가 "손상된 것"으로 보이게됩니다. 아무도 자동 감지 및이 문제를 방지하는 방법을 알고 있습니까? 내가 가지고있는 몇 가지 아이디어는 ...GWT 응용 프로그램이 오래되어 브라우저 자동 새로 고침을 감지하는 우아한 방법이 있습니까?

  1. RPC 불일치 예외를 포착하면 브라우저가 새로 고쳐집니다.
  2. 호스트 페이지를로드 할 때 빌드가 나온 소스 제어에 버전 번호를 삽입 할 때 번호가 변경되지 않았 음을 확인하는 상태 검사기/타이머가 있어야합니다. 그것이 재 장전 할 때.
  3. 임의 타이머로 다시로드 (일일 2 회).

아이디어가 있으십니까?

+3

일관되게 'IncompatibleRemoteServiceException'이 될 것이므로 옵션 1을 사용할 것입니다. 잡아라, 그들에게 멋진 에러 메시지와'location.reload (true);'를해라. – Strelok

+0

[javadoc] (http://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/user/client/rpc/IncompatibleRemoteServiceException.html)에 따라 IncompatibleRemoteServiceException이 발생하지 않습니다. 필드를 추가하거나 제거하지 않고 서비스 메소드의 구현을 변경하기 만하면됩니다. 그래서, 옵션 2의 내 버전을 사용합니다 : 클라이언트 측에서 빌드 번호를 사용하십시오. 각 GWT RPC 호출은이 빌드 번호를 서버로 보내야합니다. 페이지를 새로 고칠 수없는 경우 서버 측에서 빌드 번호가 최신인지 확인할 수 있습니다. –

답변

1

네 번째 옵션을 제시하고자합니다.

모든 UI 요청과 RPC 요청이 라우팅되는 RPC 프록시 및 UI 개체 프록시를 만듭니다. 이렇게하면이 프록시가 어떤 것이 만료되었음을 감지 할 때마다 동적으로 위젯을로드하거나 예상되는 RPC 모델을 변경할 수 있습니다.

이것은 Vaadin이 일을 처리하는 방법과 꽤 효과적입니다. Vaadin은 사용자가 알지 못하는 경우를 대비하여 GWT를 기반으로하는 UI 툴킷입니다. 지난 몇 년 동안이 응용 프로그램을 사용하여 여러 개의 장기 실행 응용 프로그램을 보유하고 있으며 버전 불일치를 추가하기 위해 UI Def language (UIDL)에서 약간의 조정 작업을 수행했습니다.

이 다이어그램은 그들이하는 일을 잘 나타내 주며, 이와 같은 것을 직접 만들고 싶지 않으면 Vaadin으로 이동하는 것이 좋습니다.

Vaadin Client Side Architecture

0

는 유휴 시간의 시간 후 사용자를 로그 아웃 보안을 구현합니다. 밤새 또는 주말에 릴리스가 있다고 가정하면 사용자는 릴리스 이후에 로그인합니다. 앱을 새로 고칠 필요가 없습니다. 특히 사이트에 결국 로그인해야하는 사용자에게 적합합니다.