you could use a Servlet Content Listener, which will tell you when the Servlet context starts / stops ... you'll at least know when Google are loading or unloading your app.
from reading your email however, it seems like there maybe a little confusion around app initialization. if you truly have to do some initialization each time the JVM starts, you won't want to store "initialized" in the datastore as if / when other instances are spun up they will be in an inconsistent state than what you want. it seems like you want this initialized state on a per context basis. C On Fri, Mar 19, 2010 at 3:18 PM, John Patterson <[email protected]>wrote: > Deploying a new version has no effect on data stored in the datastore. > > What do you mean by "initialize" your app. If you are referring to loading > data into memory then that needs to be done for every instance of your app > that is loaded. Not just once per deployment. > > > > On 19 Mar 2010, at 19:10, Ali Ok wrote: > > Ok, I understood this one. However, I think you should warn the >> developers not to use static variables at all, in a large and red >> styled documentation paragraph. >> >> In this case, assume that every static variable is converted, and they >> all being set from Datastore. >> However, this does not solve the problem. >> Let me explain an example: >> * After deployment, at the first request, let me put a flag, >> "initialized=true", into datastore >> * On later requests, my app does not need to be initialized, since I >> get initialized=true from Datastore. Everything is cool. >> >> * Let's make a new deployment to App Engine at this stage. >> * After deployment of a new version, my app needs to be intialized >> again >> * In the code, once again I check my "initialized" flag from Datastore >> is "true", since a new deployment doesn't clear the stored data, >> right? >> * How to determine that a new deployment is made, and the >> initialization needs to be run again? >> >> What are the effects of a new deployment to the Datastore? >> >> Thanks for your replies, >> Ali >> >> On 18 Mart, 22:34, Don Schwarz <[email protected]> wrote: >> >>> Unlike most Java hosting providers, we load and unload your code on JVMs >>> as >>> your load patterns change. This will result in static variable static >>> being >>> lost, and as a result you should only expect durability of data stored in >>> the datastore. Transient data should generally be stored in memcache, >>> although data may be evicted from memcache as well. >>> >>> For more information, see: >>> >>> http://code.google.com/appengine/kb/java.html#What_Causes_Loading_Req... >>> >>> On Thu, Mar 18, 2010 at 9:34 AM, Ali Ok <[email protected]> wrote: >>> >>>> Hi, >>>> I am trying to implement Google App Engine support for Myfaces 2. You >>>> can see the work [1] [2]. >>>> At the moment, I am making some trials to identify the problem at [2]. >>>> >>> >>> I am experiencing an interesting problem. My filter's static variable >>>> is lost after some time(ie. 3 minutes) >>>> I have a filter like this: >>>> public class TestFilter implements Filter >>>> { >>>> ... >>>> private static String myStaticVariable; >>>> >>> >>> public void doFilter(ServletRequest arg0, ServletResponse arg1, >>>> FilterChain arg2) throws IOException, ServletException >>>> { >>>> log.warning("myStaticVariable" + myStaticVariable); >>>> if(myStaticVariable==null) >>>> myStaticVariable = "someValue"; >>>> arg2.doFilter(arg0, arg1); >>>> } >>>> ... >>>> } >>>> >>> >>> When I make the first request, "myStaticVariable" is set to >>>> "someValue". If I make a request in a short period (ie. 20 seconds), I >>>> see that value of "myStaticVariable" is still "someValue". >>>> However, after 3 minutes, when I make another request, I see that >>>> "myStaticVariable" is set to its default value (null). >>>> >>> >>> Why are my static variables are gone? Am I doing something wrong? >>>> >>> >>> I can understand that the reconstruction of the filter and loss of >>>> instance variables; we are trying to run our application on cloud. >>>> But loss of static variables are completely weird. >>>> >>> >>> I couldn't find an issue on Google Code project, thus wanted to ask >>>> you before opening an issue. >>>> >>> >>> Thanks, >>>> Ali >>>> >>> >>> [1]https://issues.apache.org/jira/browse/MYFACES-2559 >>>> [2]https://issues.apache.org/jira/browse/MYFACES-2606 >>>> >>> >>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups >>>> "Google App Engine for Java" group. >>>> To post to this group, send email to >>>> [email protected]. >>>> To unsubscribe from this group, send email to >>>> [email protected]<google-appengine-java%[email protected]> >>>> <google-appengine-java%[email protected]<google-appengine-java%[email protected]> >>>> > >>>> . >>>> For more options, visit this group at >>>> http://groups.google.com/group/google-appengine-java?hl=en. >>>> >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "Google App Engine for Java" group. >> To post to this group, send email to >> [email protected]. >> To unsubscribe from this group, send email to >> [email protected]<google-appengine-java%[email protected]> >> . >> For more options, visit this group at >> http://groups.google.com/group/google-appengine-java?hl=en. >> >> > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine for Java" group. > To post to this group, send email to > [email protected]. > To unsubscribe from this group, send email to > [email protected]<google-appengine-java%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/google-appengine-java?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
