From cc2f5e342e509e6f12064d5ce032ba6b405a4829 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20Fern=C3=A1ndez?= Date: Wed, 14 Oct 2009 18:19:01 +0200 Subject: [PATCH] ItEr30S17ValidacionEProbasFuncionais: Catching exception when launching cleaning thread. Workaround for bug #21 --- .../web/servlets/CallbackServlet.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/servlets/CallbackServlet.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/servlets/CallbackServlet.java index fd757f8aa..5325bd159 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/servlets/CallbackServlet.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/servlets/CallbackServlet.java @@ -36,6 +36,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.Validate; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; /** * Servlet that allows to register custom responses. It must be declared at @@ -46,6 +48,8 @@ public class CallbackServlet extends HttpServlet { private static final String MAPPING = "/callback/"; + private static final Log LOG = LogFactory.getLog(CallbackServlet.class); + private static final long CLEANING_PERIOD_MILLIS = 1000 * 60 * 10; // ten // minutes @@ -139,12 +143,23 @@ public class CallbackServlet extends HttpServlet { synchronized (CallbackServlet.class) { if (contextPath == null) { contextPath = config.getServletContext().getContextPath(); - cleaningTimer.schedule(cleaningTask(), CLEANING_PERIOD_MILLIS, - CLEANING_PERIOD_MILLIS); + scheduleTimer(); } } } + private void scheduleTimer() { + try { + cleaningTimer.schedule(cleaningTask(), CLEANING_PERIOD_MILLIS, + CLEANING_PERIOD_MILLIS); + } catch (Throwable e) { + LOG + .error( + "can't start cleaning timer. A memory leak will be caused!", + e); + } + } + private TimerTask cleaningTask() { return new TimerTask() { @Override