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