# HG changeset patch # User Severin Gehwolf # Date 1360601157 -3600 # Node ID 527ed18dd3951b3a4f24e4af26970ccefaf6406f # Parent c27dd7f147a9dc3edf03a99d50ebf4f34dccd621 Improve web archive servlet init. Reviewed-by: vanaltj Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-February/005570.html diff -r c27dd7f147a9 -r 527ed18dd395 pom.xml --- a/pom.xml Wed Feb 20 10:24:38 2013 +0100 +++ b/pom.xml Mon Feb 11 17:45:57 2013 +0100 @@ -59,6 +59,7 @@ target 1.7 ${project.build.directory} + ${thermostat.build.directory}/${project.build.finalName} /usr/share/java 4.10 diff -r c27dd7f147a9 -r 527ed18dd395 web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java --- a/web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java Wed Feb 20 10:24:38 2013 +0100 +++ b/web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java Mon Feb 11 17:45:57 2013 +0100 @@ -36,6 +36,7 @@ package com.redhat.thermostat.web.server; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -113,15 +114,20 @@ @Override public void init(ServletConfig config) throws ServletException { super.init(config); + logger.log(Level.INFO, "Initializing web service"); if (!isThermostatHomeSet()) { // This is the webapp and our entry point into thermostat's web // service. The launcher did not run and hence THERMOSTAT_HOME is // not set and we need to do this ourselves. - // In this case THERMOSTAT_HOME is in the WEB-INF/thermostat folder - // in order to make it inaccessible via HTTP. This is not a "real" - // THERMOSTAT_HOME. For now it only contains an ssl.properties file. - String thermostatHome = config.getServletContext().getRealPath( - "/WEB-INF/thermostat"); + String thermostatHome = config.getInitParameter("THERMOSTAT_HOME"); + File thermostatHomeFile = new File(thermostatHome); + if (!thermostatHomeFile.canRead()) { + // This is bad news. If we can't at least read THERMOSTAT_HOME + // we are bound to fail in some weird ways at some later point. + throw new RuntimeException("THERMOSTAT_HOME = " + + thermostatHome + + " is not readable or does not exist!"); + } logger.log(Level.INFO, "Setting THERMOSTAT_HOME for webapp to " + thermostatHome); System.setProperty("THERMOSTAT_HOME", thermostatHome); diff -r c27dd7f147a9 -r 527ed18dd395 web/server/src/test/java/com/redhat/thermostat/web/server/WebStorageEndpointTest.java --- a/web/server/src/test/java/com/redhat/thermostat/web/server/WebStorageEndpointTest.java Wed Feb 20 10:24:38 2013 +0100 +++ b/web/server/src/test/java/com/redhat/thermostat/web/server/WebStorageEndpointTest.java Mon Feb 11 17:45:57 2013 +0100 @@ -153,6 +153,10 @@ @Before public void setUp() throws Exception { + // Set thermostat home to something so we don't set + // it in WebStorageEndPoint.init() + System.setProperty("THERMOSTAT_HOME", "does not matter"); + mockStorage = mock(Storage.class); StorageWrapper.setStorage(mockStorage); diff -r c27dd7f147a9 -r 527ed18dd395 web/war/pom.xml --- a/web/war/pom.xml Wed Feb 20 10:24:38 2013 +0100 +++ b/web/war/pom.xml Mon Feb 11 17:45:57 2013 +0100 @@ -88,28 +88,59 @@ true + + - maven-resources-plugin - 2.5 + org.apache.maven.plugins + maven-war-plugin + 2.3 - copy-logging-properties - prepare-package + exploded-war + package - copy-resources + exploded - src/main/webapp/WEB-INF/thermostat - + + - src/../../../distribution/config - etc true + src/main/webapp - ssl.properties + **/web.xml - + + src/main/webapp + src/main/webapp/WEB-INF/web.xml + ${thermostat.web.deploy.dir} + + + + war + package + + war + + + + + + true + src/main/webapp + + **/web.xml + + + + src/main/webapp + src/main/webapp/WEB-INF/web.xml diff -r c27dd7f147a9 -r 527ed18dd395 web/war/src/main/webapp/WEB-INF/web.xml --- a/web/war/src/main/webapp/WEB-INF/web.xml Wed Feb 20 10:24:38 2013 +0100 +++ b/web/war/src/main/webapp/WEB-INF/web.xml Mon Feb 11 17:45:57 2013 +0100 @@ -12,6 +12,11 @@ com.redhat.thermostat.storage.mongodb.MongoStorageProvider + + THERMOSTAT_HOME + ${project.build.directory}/../../../distribution/target/ + + storage.endpoint mongodb://127.0.0.1:27518