2010-11-30 9 views
0

Ich versuche, eine GAE-App zu haben, die nur Benutzer registriert und Kontakte mit ihnen verknüpft und ihren Online-Status zurückgibt. Wenn online geben Sie ihre IP zurück. Also ich habe eine JPA-Entität mit der Benutzer-ID und der Kontaktliste und einem transienten IP-Feld. Jedes Mal, wenn sich ein Benutzer anmeldet, halte ich ihn in einer Karte.Wann sind statische Servlet-Variablen in gae enthalten?

Jetzt ist die Überraschung, dass es nach einer Weile scheint, die Karte wird geleert, und wird die Benutzer vergessen. Ich habe keine Ahnung, warum das passieren könnte, wie man es überprüft (neben dem Beobachten des Verhaltens), und es existiert eine Alternative, neben dem Speichern der IP im Datenspeicher.

Antwort

2

App Engine kann Instanzen Ihrer App jederzeit als Reaktion auf sich ändernde Datenverkehrsmuster starten und herunterfahren. Hier gibt es zwei Probleme: Erstens wird Ihre App mehrere verschiedene Instanzen auf mehreren Computern ausführen, von denen jede einen separaten Status hat (einschließlich Ihrer statischen Variablen). Zweitens können Instanzen jederzeit heruntergefahren und gestartet werden, wobei die statische Variable gelöscht wird.

Wenn Sie global konsistente Daten benötigen, müssen Sie Memcache und/oder den Datenspeicher verwenden.

+0

http://code.google.com/appengine/docs/java/memcache/usingjcache.html – simpatico

+0

In meinem Fall würde ich den Datenspeicher benötigen. – simpatico

Verwandte Themen