--- android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/DepartureServlet.java 2010/09/21 07:42:15 1090 +++ android/TrainInfoService/src/dk/thoerup/traininfoservice/banedk/DepartureServlet.java 2010/09/21 15:46:02 1091 @@ -14,6 +14,7 @@ import javax.servlet.http.HttpServletResponse; import javax.xml.transform.Source; +import javax.xml.transform.Templates; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; @@ -39,7 +40,8 @@ - String xslPath; + TransformerFactory xslTransFact; + Templates xslTemplate; @Override @@ -52,7 +54,16 @@ logger.info( "DepartureServlet, use azure site=" + useAzureSite + ", cache=" + cacheTimeout); fetcher = new DepartureFetcher(useAzureSite, cacheTimeout, replyTimeout); - xslPath = getServletContext().getRealPath("/departures.xsl"); + xslTransFact = TransformerFactory.newInstance(); + + String xslPath = getServletContext().getRealPath("/departures.xsl"); + Source stylesheet = new StreamSource( new File(xslPath) ); + + try { + xslTemplate = xslTransFact.newTemplates(stylesheet); + } catch (Exception e) { + throw new ServletException(e); + } } @Override @@ -132,15 +143,10 @@ return out.toString(); } - protected String xmlToHtml(String input) { + protected String xmlToHtml(String input) throws ServletException { - try { - Source stylesheet = new StreamSource( new File(xslPath) ); - - - TransformerFactory transFact = TransformerFactory.newInstance(); - - Transformer trans = transFact.newTransformer(stylesheet); + try { + Transformer trans = xslTemplate.newTransformer(); Source xml = new StreamSource( new ByteArrayInputStream(input.getBytes() )); ByteArrayOutputStream out = new ByteArrayOutputStream(); @@ -148,7 +154,7 @@ return out.toString(); } catch (Exception e) { - return e.toString(); + throw new ServletException(e); } }