I plan to implement a GAE app only for my own usage.
The application will get its data using URL Fetch service, updating it every x minutes (using Scheduled tasks). Then it will serve that information to me when I request it.
I have barely started to look into GAE, but I have a main question that I am not able to clear. Can state be maintained in GAE between different requests without using jdo/jpa and the datastore?
As I am the only user, I guess I could keep the info in a servlet subclass and so I can avoid having to deal with Datastore…but my concern is that, as this app will have very few request, if it is moved to disk or whatever (don’t know yet if it has some specific name), it will loose its status?
I am not concerned about having to restart the whole app and start collecting data from scratch from time to time, that is ok.
You could use the http session to maintain state between requests, but that will use the datastore itself (although you won’t have to write any code to get this behaviour).
You might also consider using the Cache API (like memcache). It’s JSR 107 I think, which Google provide an implementation of. The Cache is shared between instances, but it can empty at anytime. But if you’re happy with that behaviour this may be an option. Looking at your requirements this may be the most feasible option, if you don’t want to write your own persistence code.
You could store data as a static against your Class or in an application scoped Object, but doing that means when your instance spins down or your instance switches to another instance, the data would be lost as your classes would need to be loaded into the new instance.
Or you could serialize the state to the client and send it back in with each request.
The most robust option is persistence to the datastore – the JPA code is trivial. Perhaps you should reconsider?