2012-04-23 8 views
9

Dopo molti casi di supporto stiamo realizzando il problema più grande che abbiamo con la nostra applicazione basata su GWT è che gli utenti lo lasciano aperto per settimane alla volta. Questo significa che quando facciamo una correzione ogni settimana o due gli stub RPC non sono sincronizzati e causiamo il lancio di eccezioni silenziose rendendo il sito "danneggiato". Qualcuno sa di un modo per rilevare automaticamente ed evitare questo problema? Alcune idee che ho avuto sono ...Modo elegante per rilevare se l'applicazione GWT non è aggiornata e si aggiorna automaticamente il browser?

  1. Alla cattura di un'eccezione di mancata corrispondenza RPC, aggiornare il browser.
  2. Quando si carica la pagina host, si inserisce il numero di versione nel controllo sorgente da cui proviene la build, con un controllo dello stato/timer che controlla che il numero non sia cambiato. Quando si ricarica.
  3. Ricarica su un timer arbitrario (forse due volte al giorno).

Qualche idea?

+3

Vorrei andare con l'opzione 1 poiché sarà sempre un 'IncompatibleRemoteServiceException'. Prendilo, dagli un bel messaggio di errore e 'location.reload (true);'. – Strelok

+0

Come per [javadoc] (http://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/user/client/rpc/IncompatibleRemoteServiceException.html), IncompatibleRemoteServiceException non viene generato quando è sufficiente modificare l'implementazione di un metodo di servizio senza aggiungere o rimuovere campi. Quindi, vado con la mia versione dell'opzione 2: avere il numero di build sul lato client. Ogni chiamata GWT RPC dovrebbe inviare questo numero di build al server. È possibile controllare se il numero di build è più recente sul lato server, in caso contrario è possibile aggiornare la pagina. –

risposta

1

Vorrei presentare una quarta opzione.

Creare un proxy RPC e un oggetto UI proxy che instradano tutte le richieste di UI e le richieste RPC. In questo modo ogni volta che questo proxy rileva che qualcosa non è aggiornato può caricare dinamicamente il widget o modificarne i modelli RPC previsti.

Questo è bello come Vaadin fa le cose e funziona benissimo. Vaadin è un toolkit di interfaccia utente creato su GWT nel caso in cui tu non sia a conoscenza. Abbiamo diverse applicazioni di produzione di lunga durata che utilizzano questo negli ultimi due anni e abbiamo apportato alcune modifiche nel loro linguaggio UI Def (UIDL) per aggiungere la mancata corrispondenza della versione.

Questo diagramma è una buona rappresentazione di ciò che fanno e se non si vuole costruire qualcosa di simile, consiglierei ovviamente di passare a Vaadin.

Vaadin Client Side Architecture

0

implementare la sicurezza che registra gli utenti fuori dopo un'ora di tempo di inattività. Supponendo che le tue pubblicazioni siano durante la notte o nei fine settimana, gli utenti accedono dopo il rilascio. Non è necessario aggiornare l'app. questo è fattibile specialmente se il tuo sito ha bisogno di utenti per accedere.

Problemi correlati