From 77f2eb465d7cccd65634cc25e6b993d891a47f78 Mon Sep 17 00:00:00 2001 From: Steve Nolen Date: Mon, 14 Mar 2016 17:20:14 -0700 Subject: [PATCH] #889, remove tomcat deps. tested/working with wildfly --- Dockerfile.wildfly | 37 ++++++++++++++++++ build.xml | 1 + lib/tomcat-juli.jar | Bin 0 -> 75386 bytes .../jee/listener/ConfigurationFileImport.java | 6 ++- .../ohmage/jee/listener/WebAppRootSetter.java | 7 ++++ src/org/ohmage/request/Request.java | 9 +++-- .../request/image/ImageReadRequest.java | 26 ++++++------ .../survey/SurveyResponseReadRequest.java | 16 +++++--- web/WEB-INF/web-no_ssl.xml | 4 +- 9 files changed, 82 insertions(+), 24 deletions(-) create mode 100644 Dockerfile.wildfly create mode 100644 lib/tomcat-juli.jar diff --git a/Dockerfile.wildfly b/Dockerfile.wildfly new file mode 100644 index 00000000..37ffe35c --- /dev/null +++ b/Dockerfile.wildfly @@ -0,0 +1,37 @@ +FROM jboss/wildfly +MAINTAINER Steve Nolen +# Report issues here: https://github.com/ohmage/server + +USER root + +RUN yum install -y ant ant-junit curl nc git mysql + +#### download flyway (ohmage doesn't do migrations) #### +WORKDIR /flyway +ENV FLYWAY_TGZ_URL http://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/3.2.1/flyway-commandline-3.2.1.tar.gz +RUN set -x \ + && curl -fSL "$FLYWAY_TGZ_URL" -o flyway.tar.gz \ + && tar -xvf flyway.tar.gz --strip-components=1 \ + && rm flyway.tar.gz + +WORKDIR /app +ADD . /app +RUN cp db/migration/* /flyway/sql/ \ + && ant clean dist \ + && cp dist/webapp-ohmage* /opt/jboss/wildfly/standalone/deployments/app.war \ + && cp docker_entrypoint.sh /run.sh \ + # modify run.sh to run wildfly instead of tomcat! + && sed -i 's|^exec.*$|exec /opt/jboss/wildfly/bin/standalone.sh -b 0.0.0.0|g' /run.sh \ + && chmod +x /run.sh \ + && rm -rf /app + +RUN mkdir -p /var/lib/ohmage && ln -s /var/lib/ohmage /ohmage +RUN useradd -ms /bin/bash ohmage && \ + chown -R ohmage.ohmage /opt/jboss/wildfly/ && \ + chown -R ohmage.ohmage /var/lib/ohmage + +EXPOSE 8080 + +VOLUME /ohmage + +CMD ["/run.sh"] diff --git a/build.xml b/build.xml index 66a470c9..d3932128 100644 --- a/build.xml +++ b/build.xml @@ -77,6 +77,7 @@ + diff --git a/lib/tomcat-juli.jar b/lib/tomcat-juli.jar new file mode 100644 index 0000000000000000000000000000000000000000..185652e6da35a372475c203ad1e752292fdc6228 GIT binary patch literal 75386 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 Hr;^}*AqjI_ literal 0 HcmV?d00001 diff --git a/src/org/ohmage/jee/listener/ConfigurationFileImport.java b/src/org/ohmage/jee/listener/ConfigurationFileImport.java index df6e40c8..d66185a7 100644 --- a/src/org/ohmage/jee/listener/ConfigurationFileImport.java +++ b/src/org/ohmage/jee/listener/ConfigurationFileImport.java @@ -49,8 +49,10 @@ public class ConfigurationFileImport /** * The location of the default configuration file. */ - private static final String CONFIG_FILE_DEFAULT = - "WEB-INF/config/default.properties"; + private static final String CONFIG_FILE_DEFAULT = + // SN: safe to prepend slash since this gets appended to + // ServletContext realpath. + "/WEB-INF/config/default.properties"; /** * The default location for the configuration file on Windows. */ diff --git a/src/org/ohmage/jee/listener/WebAppRootSetter.java b/src/org/ohmage/jee/listener/WebAppRootSetter.java index 2385bed1..72be3e56 100644 --- a/src/org/ohmage/jee/listener/WebAppRootSetter.java +++ b/src/org/ohmage/jee/listener/WebAppRootSetter.java @@ -21,6 +21,13 @@ public class WebAppRootSetter implements ServletContextListener { public void contextInitialized(final ServletContextEvent event) { // This is required to setup the web app's root for our use. WebUtils.setWebAppRootSystemProperty(event.getServletContext()); + // SN: Some piece of the class loading here assumes webapp.root has a trailing slash + // I don't know who is at fault (probably tomcat. ha!) but let's just hack in the trailing + // slash to get an easy fix. Note that tomcat breaks if this ends in two slashes, so only + // add if it doesn't already have the trailing slash. + if(!System.getProperty("webapp.root").endsWith("/")) { + System.setProperty("webapp.root", System.getProperty("webapp.root") + "/"); + } } /* diff --git a/src/org/ohmage/request/Request.java b/src/org/ohmage/request/Request.java index ac494f89..b81c9dd7 100644 --- a/src/org/ohmage/request/Request.java +++ b/src/org/ohmage/request/Request.java @@ -453,10 +453,11 @@ protected void respond( writer.write(responseText); } - // If the client hangs up, just print a warning. - catch(ClientAbortException e) { - LOGGER.info("The client hung up unexpectedly.", e); - } + // SN: commenting as this exception is a subclass of IOException + // and the exception is tomcat-specific. + //catch(ClientAbortException e) { + // LOGGER.info("The client hung up unexpectedly.", e); + //} catch(IOException e) { LOGGER.error("Unable to write response message. Aborting.", e); } diff --git a/src/org/ohmage/request/image/ImageReadRequest.java b/src/org/ohmage/request/image/ImageReadRequest.java index 0dfa2003..f48e7cad 100644 --- a/src/org/ohmage/request/image/ImageReadRequest.java +++ b/src/org/ohmage/request/image/ImageReadRequest.java @@ -278,9 +278,11 @@ public void respond(HttpServletRequest httpRequest, HttpServletResponse httpResp try { dos.close(); } - catch(ClientAbortException e) { - LOGGER.info("The client hung up unexpectedly.", e); - } + // SN: commenting as this exception is a subclass of IOException + // and the exception is tomcat-specific. + //catch(ClientAbortException e) { + // LOGGER.info("The client hung up unexpectedly.", e); + //} catch(IOException e) { LOGGER.warn("Error closing the data output stream.", e); } @@ -297,10 +299,11 @@ public void respond(HttpServletRequest httpRequest, HttpServletResponse httpResp httpResponse.setStatus( HttpServletResponse.SC_INTERNAL_SERVER_ERROR); } - // If the client hangs up, just print a warning. - catch(ClientAbortException e) { - LOGGER.info("The client hung up unexpectedly.", e); - } + // SN: commenting as this exception is a subclass of IOException + // and the exception is tomcat-specific. + //catch(ClientAbortException e) { + // LOGGER.info("The client hung up unexpectedly.", e); + //} // If the error occurred while reading from the input stream or // writing to the output stream, abort the whole operation and // return an error. @@ -319,10 +322,11 @@ public void respond(HttpServletRequest httpRequest, HttpServletResponse httpResp imageStream.close(); } } - // If the client hangs up, just print a warning. - catch(ClientAbortException e) { - LOGGER.info("The client hung up unexpectedly.", e); - } + // SN: commenting as this exception is a subclass of IOException + // and the exception is tomcat-specific. + //catch(ClientAbortException e) { + // LOGGER.info("The client hung up unexpectedly.", e); + //} catch(IOException e) { LOGGER.warn("Could not close the image stream.", e); // We don't care about failing the request, because, either, it diff --git a/src/org/ohmage/request/survey/SurveyResponseReadRequest.java b/src/org/ohmage/request/survey/SurveyResponseReadRequest.java index fd7dcaf4..3b6aa5cf 100644 --- a/src/org/ohmage/request/survey/SurveyResponseReadRequest.java +++ b/src/org/ohmage/request/survey/SurveyResponseReadRequest.java @@ -1377,9 +1377,11 @@ else if(OutputFormat.CSV.equals(outputFormat)) { try { writer.write(resultString); } - catch(ClientAbortException e) { - LOGGER.info("The client hung up unexpectedly.", e); - } + // SN: commenting as this exception is a subclass of IOException + // and the exception is tomcat-specific. + //catch(ClientAbortException e) { + // LOGGER.info("The client hung up unexpectedly.", e); + //} catch(IOException e) { LOGGER.warn("Unable to write response message. Aborting.", e); } @@ -1388,9 +1390,11 @@ else if(OutputFormat.CSV.equals(outputFormat)) { try { writer.close(); } - catch(ClientAbortException e) { - LOGGER.info("The client hung up unexpectedly.", e); - } + // SN: commenting as this exception is a subclass of IOException + // and the exception is tomcat-specific. + //catch(ClientAbortException e) { + // LOGGER.info("The client hung up unexpectedly.", e); + //} catch(IOException e) { LOGGER.warn("Unable to close the writer.", e); } diff --git a/web/WEB-INF/web-no_ssl.xml b/web/WEB-INF/web-no_ssl.xml index c0ddc2f5..43439c2e 100644 --- a/web/WEB-INF/web-no_ssl.xml +++ b/web/WEB-INF/web-no_ssl.xml @@ -81,6 +81,8 @@ + + default *.html