AMBARI-14231. Upgrading Ambari Jetty Server from Jetty 8 to Jetty 9. (Nisarg, Ashwin, Ravi and Varun via Jaimin)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/9d39ab2e Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/9d39ab2e Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/9d39ab2e Branch: refs/heads/branch-dev-patch-upgrade Commit: 9d39ab2e4cfb8534ce18acbb3589edfa475152bc Parents: b880a7d Author: Jaimin Jetly <jai...@hortonworks.com> Authored: Thu Jan 14 17:52:01 2016 -0800 Committer: Jaimin Jetly <jai...@hortonworks.com> Committed: Thu Jan 14 17:52:11 2016 -0800 ---------------------------------------------------------------------- ambari-funtest/pom.xml | 8 +- ambari-project/pom.xml | 24 +-- ambari-server/pom.xml | 25 ++- .../ambari/server/api/AmbariErrorHandler.java | 14 +- .../ambari/server/controller/AmbariServer.java | 181 ++++++++++++------- .../server/api/AmbariErrorHandlerTest.java | 11 +- .../controller/AmbariHandlerListTest.java | 4 +- ambari-web/pom.xml | 17 -- 8 files changed, 161 insertions(+), 123 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/9d39ab2e/ambari-funtest/pom.xml ---------------------------------------------------------------------- diff --git a/ambari-funtest/pom.xml b/ambari-funtest/pom.xml index d84b1c8..b9c591f 100644 --- a/ambari-funtest/pom.xml +++ b/ambari-funtest/pom.xml @@ -311,12 +311,8 @@ </dependency> <!--jsp support for jetty --> <dependency> - <groupId>org.mortbay.jetty</groupId> - <artifactId>jsp-api-2.1-glassfish</artifactId> - </dependency> - <dependency> - <groupId>org.mortbay.jetty</groupId> - <artifactId>jsp-2.1-glassfish</artifactId> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-jsp</artifactId> </dependency> <dependency> <groupId>org.apache.ant</groupId> http://git-wip-us.apache.org/repos/asf/ambari/blob/9d39ab2e/ambari-project/pom.xml ---------------------------------------------------------------------- diff --git a/ambari-project/pom.xml b/ambari-project/pom.xml index 68bdb94..f19ca14 100644 --- a/ambari-project/pom.xml +++ b/ambari-project/pom.xml @@ -260,38 +260,32 @@ <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> - <version>8.1.17.v20150415</version> + <version>9.2.11.v20150529</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-security</artifactId> - <version>8.1.17.v20150415</version> + <version>9.2.11.v20150529</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-servlet</artifactId> - <version>8.1.17.v20150415</version> + <version>9.2.11.v20150529</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-servlets</artifactId> - <version>8.1.17.v20150415</version> + <version>9.2.11.v20150529</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-webapp</artifactId> - <version>8.1.17.v20150415</version> + <version>9.2.11.v20150529</version> </dependency> - <!--jsp support for jetty --> <dependency> - <groupId>org.mortbay.jetty</groupId> - <artifactId>jsp-api-2.1-glassfish</artifactId> - <version>2.1.v20100127</version> - </dependency> - <dependency> - <groupId>org.mortbay.jetty</groupId> - <artifactId>jsp-2.1-glassfish</artifactId> - <version>2.1.v20100127</version> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-jsp</artifactId> + <version>9.2.11.v20150529</version> </dependency> <dependency> <groupId>org.apache.ant</groupId> @@ -327,7 +321,7 @@ <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> - <version>3.0.1</version> + <version>3.1.0</version> </dependency> <dependency> <groupId>com.sun.jersey</groupId> http://git-wip-us.apache.org/repos/asf/ambari/blob/9d39ab2e/ambari-server/pom.xml ---------------------------------------------------------------------- diff --git a/ambari-server/pom.xml b/ambari-server/pom.xml index c0010fb..eb977ad 100644 --- a/ambari-server/pom.xml +++ b/ambari-server/pom.xml @@ -48,6 +48,7 @@ <tarballResourcesFolder>src/main/resources</tarballResourcesFolder> <skipPythonTests>false</skipPythonTests> <hadoop.version>2.7.1</hadoop.version> + <jetty.version>9.2.11.v20150529</jetty.version> </properties> <build> <plugins> @@ -1324,6 +1325,11 @@ </execution> </executions> </plugin> + <plugin> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-maven-plugin</artifactId> + <version>${jetty.version}</version> + </plugin> </plugins> <resources> <resource> @@ -1765,14 +1771,9 @@ <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-webapp</artifactId> </dependency> - <!--jsp support for jetty --> - <dependency> - <groupId>org.mortbay.jetty</groupId> - <artifactId>jsp-api-2.1-glassfish</artifactId> - </dependency> <dependency> - <groupId>org.mortbay.jetty</groupId> - <artifactId>jsp-2.1-glassfish</artifactId> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-jsp</artifactId> </dependency> <dependency> <groupId>org.apache.ant</groupId> @@ -2027,6 +2028,16 @@ <artifactId>hadoop-auth</artifactId> <version>${hadoop.version}</version> </dependency> + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-util</artifactId> + <version>${jetty.version}</version> + </dependency> + <dependency> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-util-ajax</artifactId> + <version>${jetty.version}</version> + </dependency> </dependencies> <pluginRepositories> http://git-wip-us.apache.org/repos/asf/ambari/blob/9d39ab2e/ambari-server/src/main/java/org/apache/ambari/server/api/AmbariErrorHandler.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/AmbariErrorHandler.java b/ambari-server/src/main/java/org/apache/ambari/server/api/AmbariErrorHandler.java index c4a80f2..373face 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/api/AmbariErrorHandler.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/api/AmbariErrorHandler.java @@ -25,7 +25,8 @@ import org.apache.ambari.server.configuration.Configuration; import org.apache.ambari.server.security.authorization.jwt.JwtAuthenticationProperties; import org.eclipse.jetty.http.HttpStatus; import org.eclipse.jetty.http.MimeTypes; -import org.eclipse.jetty.server.AbstractHttpConnection; +import org.eclipse.jetty.server.HttpChannel; +import org.eclipse.jetty.server.HttpConnection; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.handler.ErrorHandler; @@ -50,15 +51,14 @@ public class AmbariErrorHandler extends ErrorHandler { @Override public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response) throws IOException { - AbstractHttpConnection connection = AbstractHttpConnection.getCurrentConnection(); - connection.getRequest().setHandled(true); - - response.setContentType(MimeTypes.TEXT_PLAIN); + HttpChannel httpChannel = HttpConnection.getCurrentConnection().getHttpChannel(); + httpChannel.getRequest().setHandled(true); + response.setContentType(MimeTypes.Type.TEXT_PLAIN.asString()); Map<String, Object> errorMap = new LinkedHashMap<String, Object>(); - int code = connection.getResponse().getStatus(); + int code = httpChannel.getResponse().getStatus(); errorMap.put("status", code); - String message = connection.getResponse().getReason(); + String message = httpChannel.getResponse().getReason(); if (message == null) { message = HttpStatus.getMessage(code); } http://git-wip-us.apache.org/repos/asf/ambari/blob/9d39ab2e/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java index 353a972..02a2d57 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java @@ -19,19 +19,16 @@ package org.apache.ambari.server.controller; -import java.io.File; -import java.io.IOException; -import java.net.Authenticator; -import java.net.BindException; -import java.net.PasswordAuthentication; -import java.net.URL; -import java.util.EnumSet; -import java.util.Enumeration; -import java.util.Map; - -import javax.crypto.BadPaddingException; -import javax.servlet.DispatcherType; - +import com.google.common.util.concurrent.ServiceManager; +import com.google.gson.Gson; +import com.google.inject.Guice; +import com.google.inject.Inject; +import com.google.inject.Injector; +import com.google.inject.Scopes; +import com.google.inject.Singleton; +import com.google.inject.name.Named; +import com.google.inject.persist.Transactional; +import com.sun.jersey.spi.container.servlet.ServletContainer; import org.apache.ambari.eventdb.webservice.WorkflowJsonService; import org.apache.ambari.server.AmbariException; import org.apache.ambari.server.StateRecoveryManager; @@ -108,11 +105,15 @@ import org.apache.ambari.server.utils.RetryHelper; import org.apache.ambari.server.utils.StageUtils; import org.apache.ambari.server.view.ViewRegistry; import org.apache.velocity.app.Velocity; +import org.eclipse.jetty.http.HttpVersion; +import org.eclipse.jetty.server.HttpConfiguration; +import org.eclipse.jetty.server.HttpConnectionFactory; +import org.eclipse.jetty.server.SecureRequestCustomizer; import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.SessionIdManager; import org.eclipse.jetty.server.SessionManager; -import org.eclipse.jetty.server.nio.SelectChannelConnector; -import org.eclipse.jetty.server.ssl.SslSelectChannelConnector; +import org.eclipse.jetty.server.SslConnectionFactory; import org.eclipse.jetty.servlet.DefaultServlet; import org.eclipse.jetty.servlet.FilterHolder; import org.eclipse.jetty.servlet.ServletContextHandler; @@ -131,16 +132,18 @@ import org.springframework.web.context.request.RequestContextListener; import org.springframework.web.context.support.GenericWebApplicationContext; import org.springframework.web.filter.DelegatingFilterProxy; -import com.google.common.util.concurrent.ServiceManager; -import com.google.gson.Gson; -import com.google.inject.Guice; -import com.google.inject.Inject; -import com.google.inject.Injector; -import com.google.inject.Scopes; -import com.google.inject.Singleton; -import com.google.inject.name.Named; -import com.google.inject.persist.Transactional; -import com.sun.jersey.spi.container.servlet.ServletContainer; +import javax.crypto.BadPaddingException; +import javax.servlet.DispatcherType; +import java.io.File; +import java.io.IOException; +import java.net.Authenticator; +import java.net.BindException; +import java.net.PasswordAuthentication; +import java.net.URL; +import java.util.EnumSet; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; @Singleton public class AmbariServer { @@ -355,10 +358,10 @@ public class AmbariServer { if (configs.getAgentSSLAuthentication()) { //Secured connector for 2-way auth SslContextFactory contextFactoryTwoWay = new SslContextFactory(); - disableInsecureProtocols(contextFactoryTwoWay); - - SslSelectChannelConnector sslConnectorTwoWay = new SslSelectChannelConnector(contextFactoryTwoWay); - sslConnectorTwoWay.setPort(configs.getTwoWayAuthPort()); + HttpConfiguration httpConfigurationTwoWay = new HttpConfiguration(); + httpConfigurationTwoWay.setSecureScheme("https"); + httpConfigurationTwoWay.setSecurePort(configs.getTwoWayAuthPort()); + httpConfigurationTwoWay.addCustomizer(new SecureRequestCustomizer()); String keystore = configsMap.get(Configuration.SRVR_KSTR_DIR_KEY) + File.separator + configsMap.get(Configuration.KSTR_NAME_KEY); @@ -367,19 +370,21 @@ public class AmbariServer { + configsMap.get(Configuration.TSTR_NAME_KEY); String srvrCrtPass = configsMap.get(Configuration.SRVR_CRT_PASS_KEY); - sslConnectorTwoWay.setKeystore(keystore); - sslConnectorTwoWay.setTruststore(truststore); - sslConnectorTwoWay.setPassword(srvrCrtPass); - sslConnectorTwoWay.setKeyPassword(srvrCrtPass); - sslConnectorTwoWay.setTrustPassword(srvrCrtPass); - sslConnectorTwoWay.setKeystoreType(configsMap.get(Configuration.KSTR_TYPE_KEY)); - sslConnectorTwoWay.setTruststoreType(configsMap.get(Configuration.TSTR_TYPE_KEY)); - sslConnectorTwoWay.setNeedClientAuth(configs.getTwoWaySsl()); + + contextFactoryTwoWay.setKeyStorePath(keystore); + contextFactoryTwoWay.setTrustStorePath(truststore); + contextFactoryTwoWay.setKeyManagerPassword(srvrCrtPass); + contextFactoryTwoWay.setKeyStorePassword(srvrCrtPass); + contextFactoryTwoWay.setTrustStorePassword(srvrCrtPass); + contextFactoryTwoWay.setKeyStoreType(configsMap.get(Configuration.KSTR_TYPE_KEY)); + contextFactoryTwoWay.setTrustStoreType(configsMap.get(Configuration.TSTR_TYPE_KEY)); + contextFactoryTwoWay.setNeedClientAuth(configs.getTwoWaySsl()); + disableInsecureProtocols(contextFactoryTwoWay); //SSL Context Factory SslContextFactory contextFactoryOneWay = new SslContextFactory(true); contextFactoryOneWay.setKeyStorePath(keystore); - contextFactoryOneWay.setTrustStore(truststore); + contextFactoryOneWay.setTrustStorePath(truststore); contextFactoryOneWay.setKeyStorePassword(srvrCrtPass); contextFactoryOneWay.setKeyManagerPassword(srvrCrtPass); contextFactoryOneWay.setTrustStorePassword(srvrCrtPass); @@ -388,15 +393,27 @@ public class AmbariServer { contextFactoryOneWay.setNeedClientAuth(false); disableInsecureProtocols(contextFactoryOneWay); - //Secured connector for 1-way auth - SslSelectChannelConnector sslConnectorOneWay = new SslSelectChannelConnector(contextFactoryOneWay); + HttpConfiguration httpConfigurationOneWay = new HttpConfiguration(); + httpConfigurationOneWay.setSecureScheme("https"); + httpConfigurationOneWay.setSecurePort(configs.getOneWayAuthPort()); + httpConfigurationOneWay.addCustomizer(new SecureRequestCustomizer()); + + Map <String, Integer> agentSelectorAcceptorMap = getDesiredAgentAcceptorSelector(serverForAgent); + // SSL for 1-way auth + ServerConnector sslConnectorOneWay = new ServerConnector(serverForAgent, + agentSelectorAcceptorMap.get("desiredAcceptors"), agentSelectorAcceptorMap.get("desiredSelectors"), + new SslConnectionFactory(contextFactoryOneWay, HttpVersion.HTTP_1_1.asString()), + new HttpConnectionFactory(httpConfigurationOneWay)); + sslConnectorOneWay.setPort(configs.getOneWayAuthPort()); - // because there are two connectors sharing the same pool, cut each's - // acceptors in half - int sslAcceptors = sslConnectorOneWay.getAcceptors(); - sslConnectorOneWay.setAcceptors(Math.max(2, sslAcceptors / 2)); - sslConnectorTwoWay.setAcceptors(Math.max(2, sslAcceptors / 2)); + // SSL for 2-way auth + ServerConnector sslConnectorTwoWay = new ServerConnector(serverForAgent, + agentSelectorAcceptorMap.get("desiredAcceptors"), agentSelectorAcceptorMap.get("desiredSelectors"), + new SslConnectionFactory(contextFactoryTwoWay, HttpVersion.HTTP_1_1.asString()), + new HttpConnectionFactory(httpConfigurationTwoWay)); + + sslConnectorTwoWay.setPort(configs.getTwoWayAuthPort()); // Agent Jetty thread pool configureJettyThreadPool(serverForAgent, sslConnectorOneWay.getAcceptors(), @@ -405,9 +422,9 @@ public class AmbariServer { serverForAgent.addConnector(sslConnectorOneWay); serverForAgent.addConnector(sslConnectorTwoWay); } else { - SelectChannelConnector agentConnector = new SelectChannelConnector(); + ServerConnector agentConnector = new ServerConnector(serverForAgent); agentConnector.setPort(configs.getOneWayAuthPort()); - agentConnector.setMaxIdleTime(configs.getConnectionMaxIdleTime()); + agentConnector.setIdleTimeout(configs.getConnectionMaxIdleTime()); // Agent Jetty thread pool configureJettyThreadPool(serverForAgent, agentConnector.getAcceptors(), "qtp-ambari-agent", @@ -473,7 +490,7 @@ public class AmbariServer { } /* Configure the API server to use the NIO connectors */ - SelectChannelConnector apiConnector; + ServerConnector apiConnector; if (configs.getApiSSLAuthentication()) { String httpsKeystore = configsMap.get(Configuration.CLIENT_API_SSL_KSTR_DIR_NAME_KEY) + @@ -486,21 +503,30 @@ public class AmbariServer { SslContextFactory contextFactoryApi = new SslContextFactory(); disableInsecureProtocols(contextFactoryApi); - SslSelectChannelConnector sapiConnector = new SslSelectChannelConnector(contextFactoryApi); - sapiConnector.setPort(configs.getClientSSLApiPort()); - sapiConnector.setKeystore(httpsKeystore); - sapiConnector.setTruststore(httpsTruststore); - sapiConnector.setPassword(httpsCrtPass); - sapiConnector.setKeyPassword(httpsCrtPass); - sapiConnector.setTrustPassword(httpsCrtPass); - sapiConnector.setKeystoreType(configsMap.get(Configuration.CLIENT_API_SSL_KSTR_TYPE_KEY)); - sapiConnector.setTruststoreType(configsMap.get(Configuration.CLIENT_API_SSL_KSTR_TYPE_KEY)); - sapiConnector.setMaxIdleTime(configs.getConnectionMaxIdleTime()); - apiConnector = sapiConnector; - } else { - apiConnector = new SelectChannelConnector(); + + contextFactoryApi.setKeyStorePath(httpsKeystore); + contextFactoryApi.setTrustStorePath(httpsTruststore); + contextFactoryApi.setKeyManagerPassword(httpsCrtPass); + contextFactoryApi.setKeyStorePassword(httpsCrtPass); + contextFactoryApi.setTrustStorePassword(httpsCrtPass); + contextFactoryApi.setKeyStoreType(configsMap.get(Configuration.CLIENT_API_SSL_KSTR_TYPE_KEY)); + contextFactoryApi.setTrustStoreType(configsMap.get(Configuration.CLIENT_API_SSL_KSTR_TYPE_KEY)); + + HttpConfiguration httpConfigurationSSL = new HttpConfiguration(); + httpConfigurationSSL.setSecurePort(configs.getClientSSLApiPort()); + + ServerConnector https = new ServerConnector(server, new SslConnectionFactory(contextFactoryApi, "http/1.1"), + new HttpConnectionFactory(httpConfigurationSSL)); + https.setPort(configs.getClientSSLApiPort()); + https.setIdleTimeout(configs.getConnectionMaxIdleTime()); + apiConnector = https; + } else { + HttpConfiguration httpConfiguration = new HttpConfiguration(); + httpConfiguration.setSecurePort(configs.getClientApiPort()); + + apiConnector = new ServerConnector(server, new HttpConnectionFactory(httpConfiguration)); apiConnector.setPort(configs.getClientApiPort()); - apiConnector.setMaxIdleTime(configs.getConnectionMaxIdleTime()); + apiConnector.setIdleTimeout(configs.getConnectionMaxIdleTime()); } // Client Jetty thread pool @@ -578,13 +604,38 @@ public class AmbariServer { } /** + * Calculate desired Acceptor and Selector for Jetty agent ServerConnector + * @param serverForAgent + * the Jetty server instance which will have the selector and Acceptor set on it + * @return jettySelectorAcceptorMap + * Map with "desiredAcceptors" and "desiredSelectors" keys + */ + protected Map<String, Integer> getDesiredAgentAcceptorSelector(Server serverForAgent) { + ServerConnector serverConnector = new ServerConnector(serverForAgent); + Map <String, Integer> jettySelectorAcceptorMap = new HashMap<>(); + // By default Jetty-9 assigns Math.max(1, Math.min(4, (cores available to JVM)/8)) acceptors to a ServerConnector + int defaultAcceptors = serverConnector.getAcceptors(); + + // By default Jetty-9 assigns Math.max(1, Math.min(4, (cores available to JVM)/2))) selectors to a ServerConnector + int defaultSelectors = serverConnector.getSelectorManager().getSelectorCount(); + + // because there are two connectors sharing the same pool, cut each's + // acceptors and selectors in half + int desiredAcceptors = Math.max(2, defaultAcceptors / 2); + int desiredSelectors = Math.max(2, defaultSelectors / 2); + jettySelectorAcceptorMap.put("desiredAcceptors", desiredAcceptors); + jettySelectorAcceptorMap.put("desiredSelectors", desiredSelectors); + return jettySelectorAcceptorMap; + } + + /** * The Jetty thread pool consists of three basic types of threads: * <ul> * <li>Acceptors</li> * <li>Selectors</li> * <li>Threads which can actually do stuff</li> * <ul> - * The {@link SelectChannelConnector} uses the + * The {@link ServerConnector} uses the * {@link Runtime#availableProcessors()} as a way to determine how many * acceptors and selectors to create. If the number of processors is too * great, then there will be no threads left to fullfil connection requests. @@ -630,9 +681,9 @@ public class AmbariServer { threadPoolName, acceptorThreads * 2, configuredThreadPoolSize, Runtime.getRuntime().availableProcessors()); - QueuedThreadPool qtp = new QueuedThreadPool(configuredThreadPoolSize); + final QueuedThreadPool qtp = server.getBean(QueuedThreadPool.class); qtp.setName(threadPoolName); - server.setThreadPool(qtp); + qtp.setMaxThreads(configuredThreadPoolSize); } /** http://git-wip-us.apache.org/repos/asf/ambari/blob/9d39ab2e/ambari-server/src/test/java/org/apache/ambari/server/api/AmbariErrorHandlerTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/api/AmbariErrorHandlerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/api/AmbariErrorHandlerTest.java index 8b4f99c..30c22a2 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/api/AmbariErrorHandlerTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/api/AmbariErrorHandlerTest.java @@ -20,13 +20,15 @@ package org.apache.ambari.server.api; import com.google.gson.Gson; import com.google.gson.JsonSyntaxException; -import com.sun.jersey.api.client.*; +import com.sun.jersey.api.client.Client; +import com.sun.jersey.api.client.ClientResponse; +import com.sun.jersey.api.client.WebResource; import org.apache.ambari.server.configuration.Configuration; +import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.servlet.DefaultServlet; import org.eclipse.jetty.servlet.ServletContextHandler; -import org.eclipse.jetty.servlet.ServletHandler; -import org.eclipse.jetty.servlet.ServletHolder; import org.junit.Test; import javax.servlet.ServletException; @@ -63,7 +65,8 @@ public class AmbariErrorHandlerTest { server.start(); - int localPort = server.getConnectors()[0].getLocalPort(); + Connector connector = server.getConnectors()[0]; + int localPort = ((ServerConnector)connector).getLocalPort(); Client client = new Client(); WebResource resource = client.resource("http://localhost:" + localPort + "/"); http://git-wip-us.apache.org/repos/asf/ambari/blob/9d39ab2e/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariHandlerListTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariHandlerListTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariHandlerListTest.java index 2e2cc45..9a4cca1 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariHandlerListTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariHandlerListTest.java @@ -140,10 +140,10 @@ public class AmbariHandlerListTest { expect(viewEntity.getClassLoader()).andReturn(classLoader).anyTimes(); expect(handler.isStarted()).andReturn(true).anyTimes(); - handler.handle("/api/v1/views/TEST/versions/1.0.0/instances/INSTANCE_1/resources/test", - baseRequest, request, response); replay(handler, viewRegistry, viewEntity); + handler.handle("/api/v1/views/TEST/versions/1.0.0/instances/INSTANCE_1/resources/test", + baseRequest, request, response); AmbariHandlerList handlerList = getAmbariHandlerList(handler); handlerList.viewRegistry = viewRegistry; http://git-wip-us.apache.org/repos/asf/ambari/blob/9d39ab2e/ambari-web/pom.xml ---------------------------------------------------------------------- diff --git a/ambari-web/pom.xml b/ambari-web/pom.xml index d160e37..761a3f0 100644 --- a/ambari-web/pom.xml +++ b/ambari-web/pom.xml @@ -196,23 +196,6 @@ <commandlineArgs>${args.npm} test</commandlineArgs> </configuration> </execution> - <execution> - <id>gzip ambari-web content</id> - <phase>prepare-package</phase> - <goals> - <goal>exec</goal> - </goals> - <configuration> - <executable>${executable.gzip}</executable> - <workingDirectory>${basedir}</workingDirectory> - <arguments> - <argument>-f</argument> - <argument>public/javascripts/app.js</argument> - <argument>public/javascripts/vendor.js</argument> - <argument>public/stylesheets/app.css</argument> - </arguments> - </configuration> - </execution> </executions> </plugin> <plugin>