you don't get sessionDestroyed. I believe there's a couple of issues with notification of a destroyed session and the most significant one would be that there's no guarantee that an instance of your application will even be running (1.4.0 will allow reserved instances but that isn't out yet.) Other issues would be that since this is a distributed environment which instance should receive sessionDestroyed. GAE would have to implement this one their backend. I believe sessions currently are just created by the Servlet Context of an instance when necessary and that instance's sessionCreated is the one that is executed. You however can query the _ah_SESSION table to see if a given session is still active or has expired.