2012-06-11 3 views
2

J'ai une application construite avec GWT + AppEngine, pour la création automatique des jeux-questionnaires:contenu préchargement dans une application GWT + AppEngine

  1. La page Web principale a un bouton "Créer un nouveau jeu-questionnaire".

  2. Cliquer sur le bouton active un service dans le backend, qui crée le quiz et le renvoie.

  3. La page principale affiche ensuite le quiz.

La création quiz prend beaucoup de temps, donc je pensais que la pré-chargement d'un jeu-questionnaire alors que l'utilisateur répond à un questionnaire: après avoir affiché le jeu-questionnaire, activer un autre service dans l'arrière-plan, qui crée la prochain quiz et le conserve dans une variable locale. Lorsque l'utilisateur clique de nouveau sur "créer un nouveau quiz", l'arrière-plan remarque qu'il y a un quiz pré-créé et le renvoie immédiatement.

Cela fonctionne bien en mode développement sur mon ordinateur, mais ne fonctionne pas lorsque je déploie sur AppEngine.

Il semble qu'il y ait plusieurs copies du backend avec toutes ses variables locales, de sorte que le service "preload" s'exécute sur une copie, et le "return new quiz" s'exécute sur un autre, et n'utilise pas le quiz préchargé.

Est-ce vrai? Combien de copies de mon back-end existent? Si le nombre est constant, je peux simplement lancer plusieurs fois le "test de précharge", un pour chaque copie.

Répondre

1

Le nombre n'est pas constant et vous ne devez pas supposer que vos serveurs dorsaux peuvent fonctionner de cette manière.

Vous devez utiliser les services fournis tels que memcache et le magasin de données pour communiquer entre les demandes. Vous devriez essentiellement supposer que chaque demande est traitée par une instance totalement différente et complètement nouvelle de votre application. Les variables dans la mémoire normale ne fonctionnent pas bien entre les demandes.

+0

Parfait! Je viens de remplacer ma carte par un JCache et ça fonctionne comme un charme. –

Questions connexes