From 323d75df568fded734bbd768fff0368801198f04 Mon Sep 17 00:00:00 2001 From: Christian Klinger Date: Fri, 10 Jun 2016 13:28:48 +0200 Subject: removed the caching mechanism. --- .../java/org/openslx/bwlp/sat/web/WebServer.java | 61 ++++++---------------- 1 file changed, 16 insertions(+), 45 deletions(-) (limited to 'dozentenmodulserver/src/main/java') diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java index 5f82bac1..232ab93d 100644 --- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java @@ -3,8 +3,7 @@ package org.openslx.bwlp.sat.web; import java.io.ByteArrayInputStream; import java.io.IOException; import java.sql.SQLException; -import java.util.Collections; -import java.util.LinkedHashMap; + import java.util.Map; import org.apache.commons.io.output.ByteArrayOutputStream; @@ -12,7 +11,6 @@ import org.apache.log4j.Logger; import org.openslx.bwlp.sat.database.mappers.DbLecture; import org.openslx.bwlp.sat.fileserv.FileServer; import org.openslx.bwlp.thrift.iface.TNotFoundException; -import org.openslx.util.GenericDataCache; import org.openslx.util.Json; import org.openslx.util.vm.VmMetaData; import org.simpleframework.xml.Serializer; @@ -24,39 +22,8 @@ public class WebServer extends NanoHTTPD { private static final Logger LOGGER = Logger.getLogger(WebServer.class); - private static final int LIST_CACHE_MS = 15000; - private static final int LIST_CACHE_MAX_ENTRIES = 16; - - private static final Map lectureListCache = Collections.synchronizedMap(new LinkedHashMap() { - private static final long serialVersionUID = -8461839969909678055L; - - @Override - protected boolean removeEldestEntry(Map.Entry eldest) { - return size() > LIST_CACHE_MAX_ENTRIES; - } - }); - private static final Serializer serializer = new Persister(); - private class XmlDataCache extends GenericDataCache { - - private final String locationId; - - public XmlDataCache(String locations) { - super(LIST_CACHE_MS); - this.locationId = locations; - } - - @Override - protected byte[] update() throws Exception { - VmChooserListXml listXml = DbLecture.getUsableListXml(false, locationId); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - serializer.write(listXml, baos); - return baos.toByteArray(); - } - - } - public WebServer(int port) { super("127.0.0.1", port); super.maxRequestSize = 65535; @@ -65,7 +32,8 @@ public class WebServer extends NanoHTTPD { /** * Extract request source ip address. Honors the x-forwarded-for header. * - * @param headers map of headers as supplied by nanohttpd + * @param headers + * map of headers as supplied by nanohttpd * @return IP address, or empty string if unknown */ private String extractIp(Map headers) { @@ -107,7 +75,12 @@ public class WebServer extends NanoHTTPD { private Response handle(IHTTPSession session, String uri) { // Our special stuff if (uri.startsWith("/vmchooser/list")) { - return serveVmChooserList(session.getParms()); + try { + return serveVmChooserList(session.getParms()); + } catch (Exception e) { + LOGGER.debug("problem while retrieving the vmChooserList", e); + return internalServerError(); + } } if (uri.startsWith("/vmchooser/lecture/")) { return serveLectureStart(uri.substring(19)); @@ -152,20 +125,18 @@ public class WebServer extends NanoHTTPD { new ByteArrayInputStream(meta.getFilteredDefinitionArray())); } - private Response serveVmChooserList(Map params) { + private Response serveVmChooserList(Map params) throws Exception { String locations = params.get("locations"); - XmlDataCache cache = lectureListCache.get(locations); - if (cache == null) { - cache = new XmlDataCache(locations); - lectureListCache.put(locations, cache); - } + + VmChooserListXml listXml = DbLecture.getUsableListXml(false, locations); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + serializer.write(listXml, baos); return new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK, "text/xml; charset=utf-8", - new ByteArrayInputStream(cache.get())); + new ByteArrayInputStream(baos.toByteArray())); } public static Response internalServerError() { - return new NanoHTTPD.Response(NanoHTTPD.Response.Status.INTERNAL_ERROR, "text/plain", - "Internal Server Error"); + return new NanoHTTPD.Response(NanoHTTPD.Response.Status.INTERNAL_ERROR, "text/plain", "Internal Server Error"); } public static Response notFound() { -- cgit v1.2.3-55-g7522