--- android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/DepartureServlet.java 2009/09/10 18:11:53 307 +++ android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/DepartureServlet.java 2009/10/08 20:46:40 425 @@ -5,6 +5,8 @@ import java.sql.ResultSet; import java.sql.Statement; import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -22,6 +24,7 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; +import dk.thoerup.curcuitbreaker.CircuitBreakerException; import dk.thoerup.traininfoservice.DBConnection; /** @@ -29,12 +32,15 @@ */ public class DepartureServlet extends HttpServlet { private static final long serialVersionUID = 1L; + + Logger logger = Logger.getLogger( DepartureServlet.class.getName() ); DepartureFetcher fetcher = new DepartureFetcher(); TransformerFactory transformerFactory = TransformerFactory.newInstance(); DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); + @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { int station = Integer.parseInt( req.getParameter("station") ); String format = req.getParameter("format"); @@ -44,9 +50,19 @@ String stationName = getStationName(station); try { - beans = fetcher.lookupDepartures(station); - } catch (Exception e) { - throw new ServletException(e); + beans = fetcher.cachedLookupDepartures(station); + } catch (java.net.SocketTimeoutException ste) { + logger.warning("Read timed out, station="+station); + resp.sendError(500); + return; + } catch (CircuitBreakerException cbe) { + logger.warning("Circuitbreaker - failing fast"); + resp.sendError(500); + return; + } catch (Throwable e) { + logger.log(Level.WARNING, "Unknown exception, station=" +station, e); + resp.sendError(500); + return; } resp.setDateHeader("Expires", 0);