Comment rediriger vers la page de connexion après l'expiration de la session dans l'appel RTC GWT
Je suis en utilisant GWT RPC et dans mon application. après la session expire lorsque je fais un appel RPC, à cause de ma connexion de filtre de la requête de redirection de connexion.jsp, mais mon problème est que le client ne débite pas me montrer de connexion.jsp au lieu du cpr onFailure soulevées.
Cela signifie que je doit gérer tous mes rpc onFailure événements pour rediriger vers la page de login ?!!!!
Grâce
source d'informationauteur Nav | 2010-09-07
Vous devez vous connecter pour publier un commentaire.
Je suis d'accord avec pathed que vous devriez faire la redirection dans votre
AsyncCallback
s. Cependant, vous n'avez pas besoin d'utiliser de manière explicite personnalisé de votreMyAsyncCallback
rappels au lieu de la norme GWTAsyncCallback
. C'est important, par exemple lorsque vous avez déjà beaucoup de code qui utilise la norme de rappels.Lorsque vous appelez
GWT.create(MyService.class)
GWT génère proxy pour votreMyServiceAsync
interface de service. Ce proxy est responsable de la communication avec le serveur et invoquant vos rappels quand il récupère les données à partir du serveur. Les procurations sont générées à l'aide de GWT générateurs de code mécanisme et par défaut GWT utiliseServiceInterfaceProxyGenerator
classe pour générer ces mandataires.Vous pouvez étendre ce générateur par défaut (
ServiceInterfaceProxyGenerator
classe) pour utiliser automatiquement votre personnalisé MyAsyncCallbacks dans tous les rappels des invocations. Récemment, nous avons fait exactement ce que dans un projet. Ci-dessous il y a le code source que nous avons utilisé.Code pour
MyAsyncCallback
elle est identique à celle présentée par pathed:Code GWT générateur de code (
MyRpcRemoteProxyGenerator
):Et générateur de la classe helper (
MyProxyCreator
):Enfin, vous devez vous inscrire sur le nouveau générateur de code à utiliser pour générer des procurations pour async services. Ceci est accompli en ajoutant ceci à votre GWT fichier de configuration (gwt.xml fichier):
Au début, il peut sembler très compliqué solution 🙂 mais il a ses points forts:
AsyncCallback
sgenerate-with
dans votre GWT fichiers de config)Oui, vous devriez poignée de délai d'expiration de session dans un onFailure(à mon avis). Mais il existe des moyens simples de le faire.
Mettre en place votre propre asynchrone en fonction de rappel.
}
Utiliser une bibliothèque comme gwt-répartiteur où tous les rpc-les appels passent par le même serviceasync et donne u un seul endroit pour gérer onFailures.
J'ai mis un petit correctif à MyProxyCreator @Piotr version, adaptée à GWT 2.5
Il changé les méthodes de signes pour generateProxyMethods et doInvoke.
Meilleures Salutations.
iVieL
Pourquoi ne pas vous que vous avez une GWT minuterie (http://google-web-toolkit.googlecode.com/svn/javadoc/2.4/com/google/gwt/user/client/Timer.html) en cours d'exécution à la place qui vérifie si la session est active/expiré, puis invite l'utilisateur à prolonger la session ou passez à la page de déconnexion. Pourquoi faites-vous ce que les appels RPC?
Client: Tous les Rappels de prolonger un Résumé de Rappel où vous mettez en œuvre la onFailur()
Serveur: Tous vos ServiceImplementations étendre AbstractServicesImpl où vous avez accès à votre SessionData. Remplacer onBeforeRequestDeserialized(String serializedRequest) et vérifier le SessionData. Si le SessionData a expire ensuite écrire un spacific message d'erreur au client. Ce message d'erreur est prise en checkt dans votre AbstrCallback et rediriger vers la Page de Connexion.
En Outre, vous pouvez également Remplacer doUnexpectedFailure(Throwable t) pour éviter l'enregistrement de l'jeté NullPointerException.
J'ai utilisé le suivant avec GWT 2.2 pour gérer la nouvelle doInvoke méthode: