-1

Je suis extrêmement confus avec cet exemple d'application que j'ai mis en place sur google app engine. voici ce que j'ai:Comment la variable d'instance fonctionne sur Google App Engine? [Java]

package com.ha.ha.ha; 
import java.io.IOException; 
import javax.servlet.http.*; 

@SuppressWarnings("serial") 
public class SecondTrialServlet extends HttpServlet { 

    private static int sCounter = 0; 
    private int mCounter = 0; 

    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { 
     resp.setContentType("text/plain"); 
     resp.getWriter().println("sCounter is : " + (sCounter++)); 
     resp.getWriter().println("mCounter is : " + (mCounter++)); 
    } 
} 

et quand je frappe mon localhost (ou version déployée pour cette matière), sur la page du navigateur, et actualiser la page 9 fois, je vois:

sCounter is : 9 
mCounter is : 9 

Pourquoi cela arrive-t-il? Je pensais que les variables d'instance sont supposées être "effacées" ou quelque chose quand je fais une nouvelle requête (actualisation de la page du navigateur).

combien de temps puis-je m'attendre à ce que le compteur continue? comme si je mis là un rafraîchissement de la page, va-t-il continuer jusqu'à Integer.MAX_VALUE?

est-ce seulement parce que j'ai 1 "instance" up ?? si oui, combien de temps puis-je attendre que cette instance continue de fonctionner?

Je veux construire une application simple qui garde quelques hashmaps indéfiniment. Je ne m'attends pas à ce que l'application web ait du trafic (peut-être moins de 100 demandes par jour). puis-je stocker tout comme je le fais avec la variable compteur?

Répondre

1

Dans GooglaAppEngine, vous ne pouvez pas compter sur l'état interne d'une servlet.

Si vous souhaitez avoir un état, vous devez utiliser l'API fournie à partir de leur cache.

Sur le mCounter = 9, la même chose s'applique: le garbage collector est appelé quand est plus approprié pour GAE, et vous ne pouvez pas compter sur cela.

En outre, si vous voulez mettre à l'échelle vos instances, aucun état ne peut être géré de cette manière, mais uniquement via le système de cache interne de GAE.

Espérons que cela aide