--- android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/TimetableServlet.java 2009/09/28 21:33:24 350 +++ android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/TimetableServlet.java 2009/10/20 10:32:19 451 @@ -2,6 +2,7 @@ import java.io.IOException; import java.util.List; +import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.ServletException; @@ -9,6 +10,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import dk.thoerup.curcuitbreaker.CircuitBreakerException; + /** * Servlet implementation class TimetableServlet */ @@ -20,6 +23,7 @@ TimetableFetcher fetcher = new TimetableFetcher(); + @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String train = request.getParameter("train").trim(); @@ -33,15 +37,21 @@ String trainID = sections[1]; try { - List timetable = fetcher.lookupTimetable(trainID, type); + List timetable = fetcher.cachedLookupTimetable(trainID, type); String responseXML = formatTimetable(timetable); response.setContentType("text/xml"); response.getWriter().print(responseXML); - } catch (Exception e) { - logger.warning("failure looking up timetable: train=" +train); - throw new ServletException(e); + } catch (java.net.SocketTimeoutException ste) { + logger.warning("(timetable) Read timed out, train="+train); + response.sendError(500, "Backend timed out"); + } catch (CircuitBreakerException cbe) { + logger.warning("Circuitbreaker - failing fast"); + response.sendError(500); + }catch (Exception e) { + logger.log(Level.WARNING, "failure looking up timetable: train=" +train, e); + response.sendError(500); } }