import java.io.*; import java.lang.reflect.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class SaveState extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/plain"); PrintWriter out = res.getWriter(); ServletContext context = getServletContext(); Enumeration names = context.getServletNames(); while (names.hasMoreElements()) { String name = (String)names.nextElement(); Servlet servlet = context.getServlet(name); out.println("Trying to save the state of " + name + "..."); out.flush(); try { Method save = servlet.getClass().getMethod("saveState", null); save.invoke(servlet, null); out.println("Saved!"); } catch (NoSuchMethodException e) { out.println("Not saved. This servlet has no saveState() method."); } catch (SecurityException e) { out.println("Not saved. SecurityException: " + e.getMessage()); } catch (InvocationTargetException e) { out.print("Not saved. The saveState() method threw an exception: "); Throwable t = e.getTargetException(); out.println(t.getClass().getName() + ": " + t.getMessage()); } catch (Exception e) { out.println("Not saved. " + e.getClass().getName() + ": " + e.getMessage()); } out.println(); } } public String getServletInfo() { return "Calls the saveState() method (if it exists) for all the " + "currently loaded servlets"; } }