/* * Copyright (C) 2010-2012 Stichting Akvo (Akvo Foundation) * * This file is part of Akvo FLOW. * * Akvo FLOW is free software: you can redistribute it and modify it under the terms of * the GNU Affero General Public License (AGPL) as published by the Free Software Foundation, * either version 3 of the License or any later version. * * Akvo FLOW is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Affero General Public License included below for more details. * * The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>. */ package org.waterforpeople.mapping.app.web; import java.io.IOException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.google.appengine.api.LifecycleManager; import com.google.appengine.api.LifecycleManager.ShutdownHook; /** * simple servlet to bind a shutdown hook * * @author Christopher Fagiani */ public class StartupServlet extends HttpServlet { private static final long serialVersionUID = -5683590972260558060L; public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { executeRequest(req, resp); } public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { executeRequest(req, resp); } private void executeRequest(HttpServletRequest req, HttpServletResponse resp) { try { resp.setStatus(HttpServletResponse.SC_OK); LifecycleManager.getInstance().setShutdownHook(new ShutdownHook() { public void shutdown() { LifecycleManager.getInstance().interruptAllRequests(); } }); } catch (Throwable t) { System.out.println("Cannot register shutdown hook." + t.getMessage()); t.printStackTrace(); } } }