2011-11-02 2 views
0

Je travaille sur le stockage différents compteurs utilisateur dans la mémoire au niveau de l'application (base de données non) et d'avoir des compteurs à atmost 3.comment garder un compteur hashmap dans GWT applicatoin

J'ai développé ce code en utilisant une classe singleton avec hashmap pour stocker une paire de valeur clé de l'ID de l'utilisateur et et c'est compteur et le temps. Après l'initiale, j'utilisais cette classe singleton du côté client, ça fonctionnait bien pour les compteurs mais quand le navigateur était rafraîchi, un nouvel objet singleton était créé. J'ai cherché, et je viens de savoir que pour des raisons de sécurité, javascript n'utilise pas d'objets partagés, donc je l'ai déplacé vers l'appel rpc et l'ai fait côté serveur pour le surmonter, mais quand je l'ai testé à nouveau un nouvel objet est créé et des données perdues.

J'ai également testé la hashmap statique pour contenir les données pour la portée de l'application, mais il a presque le même comportement, une fois actualisé le navigateur, sa réinitialisation et les anciennes données y sont perdues. C'est un comportement peu différent des applications web java normales où nous suivons cette approche.

cette technique utilisée pour travailler pour moi en cas de applicatoins web spripng normal, mais pas dans GWT

Répondre

0

Vous avez raison, vous aurez besoin de stocker cette valeur sur le côté serveur et y accéder via un Async appel. Comme vous avez eu du succès avec Spring dans le passé, vous pourriez envisager de l'utiliser à nouveau avec le côté implémentation de vos services GWT Async. Vous pouvez facilement injecter un bean Spring Singleton dans la classe d'implémentation Async GWT et l'utiliser comme vous l'avez fait dans le passé.

+0

Vous avez raison, vous devez stocker cette valeur sur le serveur et y accéder via un appel Async, j'ai déjà fait cette partie, mais pas de chance, lors de l'actualisation de la page, un nouvel objet est créé et des données sont perdu dans l'objet. Pouvez-vous s'il vous plaît me confirmer que sans appel de printemps ASync ne fonctionnera pas aussi. J'ai fait beaucoup de débogage pour ce scénario, mais cela n'a pas fonctionné pour moi. Dans l'attente de votre réponse – user1430003

0

Quelle est la durée de vie prévue des compteurs? Sont-ils partagés par d'autres utilisateurs? Vous pouvez les stocker dans la base de données ou dans une session et y accéder via un appel GWT Async.

0

Vous pouvez utiliser GWT HTML5 LocalStorage pour avoir des données persistantes côté client ou bien sûr utiliser le côté serveur. Cela dépend vraiment de ce que vous essayez d'atteindre.

Questions connexes