diff --git common/src/java/org/apache/hive/http/HttpServer.java common/src/java/org/apache/hive/http/HttpServer.java index c4e2e33..42d2959 100644 --- common/src/java/org/apache/hive/http/HttpServer.java +++ common/src/java/org/apache/hive/http/HttpServer.java @@ -51,6 +51,8 @@ import org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender; import org.apache.logging.log4j.core.appender.FileManager; import org.apache.logging.log4j.core.appender.OutputStreamManager; +import org.eclipse.jetty.rewrite.handler.RewriteHandler; +import org.eclipse.jetty.rewrite.handler.RewriteRegexRule; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandler.Context; @@ -386,9 +388,21 @@ void initializeWebServer(Builder b) { connector.setPort(b.port); webServer.addConnector(connector); + RewriteHandler rwHandler = new RewriteHandler(); + rwHandler.setRewriteRequestURI(true); + rwHandler.setRewritePathInfo(false); + + RewriteRegexRule rootRule = new RewriteRegexRule(); + rootRule.setRegex("^/$"); + rootRule.setReplacement("/hiveserver2.jsp"); + rootRule.setTerminating(true); + + rwHandler.addRule(rootRule); + rwHandler.setHandler(webAppContext); + // Configure web application contexts for the web server ContextHandlerCollection contexts = new ContextHandlerCollection(); - contexts.addHandler(webAppContext); + contexts.addHandler(rwHandler); webServer.setHandler(contexts); addServlet("jmx", "/jmx", JMXJsonServlet.class); diff --git service/src/resources/hive-webapps/hiveserver2/index.html service/src/resources/hive-webapps/hiveserver2/index.html deleted file mode 100644 index f18ba53..0000000 --- service/src/resources/hive-webapps/hiveserver2/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - diff --git service/src/test/org/apache/hive/service/server/TestHS2HttpServer.java service/src/test/org/apache/hive/service/server/TestHS2HttpServer.java index c9e0ac3..d918c64 100644 --- service/src/test/org/apache/hive/service/server/TestHS2HttpServer.java +++ service/src/test/org/apache/hive/service/server/TestHS2HttpServer.java @@ -20,9 +20,11 @@ import java.io.BufferedReader; import java.io.InputStreamReader; +import java.io.StringWriter; import java.net.HttpURLConnection; import java.net.URL; +import org.apache.commons.io.IOUtils; import org.apache.hadoop.hive.conf.HiveConf; import org.apache.hadoop.hive.conf.HiveConf.ConfVars; import org.apache.hadoop.hive.metastore.MetaStoreUtils; @@ -86,6 +88,27 @@ public void testStackServlet() throws Exception { } @Test + public void testContextRootUrlRewrite() throws Exception { + String baseURL = "http://localhost:" + webUIPort + "/"; + URL url = new URL(baseURL); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + Assert.assertEquals(HttpURLConnection.HTTP_OK, conn.getResponseCode()); + StringWriter writer = new StringWriter(); + IOUtils.copy(conn.getInputStream(), writer, "UTF-8"); + String contextRootContent = writer.toString(); + + String jspUrl = "http://localhost:" + webUIPort + "/hiveserver2.jsp"; + url = new URL(jspUrl); + conn = (HttpURLConnection) url.openConnection(); + Assert.assertEquals(HttpURLConnection.HTTP_OK, conn.getResponseCode()); + writer = new StringWriter(); + IOUtils.copy(conn.getInputStream(), writer, "UTF-8"); + String jspContent = writer.toString(); + + Assert.assertEquals(contextRootContent, jspContent); + } + + @Test public void testConfStrippedFromWebUI() throws Exception { String pwdValFound = null;