--- android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/TimetableServlet.java 2009/10/08 12:19:42 421 +++ android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/TimetableServlet.java 2010/02/05 13:57:39 584 @@ -10,7 +10,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import dk.thoerup.curcuitbreaker.CircuitBreakerException; +import dk.thoerup.circuitbreaker.CircuitBreakerException; /** * Servlet implementation class TimetableServlet @@ -21,9 +21,25 @@ Logger logger = Logger.getLogger( TimetableServlet.class.getName() ); - TimetableFetcher fetcher = new TimetableFetcher(); + TimetableFetcher fetcher; + @Override + public void init() throws ServletException { + super.init(); + + boolean useTempSite = Boolean.parseBoolean( getServletContext().getInitParameter("usetempsite") ); + int cacheTimeout = Integer.parseInt( getServletContext().getInitParameter("cache_timeout") ); + logger.info( "TimetableServlet, use temp site=" + useTempSite + ", cache=" + cacheTimeout); + fetcher = new TimetableFetcher(useTempSite,cacheTimeout); + } + + @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + if (request.getParameter("train") == null) { + response.sendError(400, "not enough parameters"); + return; + } + String train = request.getParameter("train").trim(); String sections[] = train.split(" "); @@ -31,7 +47,7 @@ response.sendError(400, "Invalid parameter"); return; } - + String type = lookupType(sections[0]); String trainID = sections[1]; try @@ -42,13 +58,13 @@ response.setContentType("text/xml"); response.getWriter().print(responseXML); - } catch (java.net.SocketTimeoutException ste) { - logger.warning("(timetable) Read timed out, train="+train); + } catch (java.io.IOException ioe) { + logger.warning("(timetable) Read failed, train="+train + ". " + ioe.getMessage()); response.sendError(500, "Backend timed out"); } catch (CircuitBreakerException cbe) { logger.warning("Circuitbreaker - failing fast"); response.sendError(500); - }catch (Throwable e) { + }catch (Exception e) { logger.log(Level.WARNING, "failure looking up timetable: train=" +train, e); response.sendError(500); }