Implements destroy() method of servlet to ensure that shared JanitorThread terminates.
TAPESTRY-230: Ignored interruptedException prevents Janitorthread termination.


git-svn-id: https://svn.apache.org/repos/asf/jakarta/tapestry/branches/branch-3-0@244163 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/src/org/apache/tapestry/ApplicationServlet.java b/framework/src/org/apache/tapestry/ApplicationServlet.java
index 00e28b4..80ce4a0 100644
--- a/framework/src/org/apache/tapestry/ApplicationServlet.java
+++ b/framework/src/org/apache/tapestry/ApplicationServlet.java
@@ -39,6 +39,7 @@
 import org.apache.tapestry.spec.IApplicationSpecification;
 import org.apache.tapestry.util.DefaultResourceResolver;
 import org.apache.tapestry.util.DelegatingPropertySource;
+import org.apache.tapestry.util.JanitorThread;
 import org.apache.tapestry.util.ServletContextPropertySource;
 import org.apache.tapestry.util.ServletPropertySource;
 import org.apache.tapestry.util.SystemPropertiesPropertySource;
@@ -787,4 +788,20 @@
         return _resolver;
     }
 
+    /**
+     * Ensures that shared janitor thread is terminated.
+     * @see javax.servlet.Servlet#destroy()
+     * @since 3.0.3
+     */
+    public void destroy()
+    {
+        try
+        {
+            JanitorThread.getSharedJanitorThread().interrupt();
+        }
+        finally
+        {
+            super.destroy();
+        }
+    }
 }
\ No newline at end of file