----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/33553/ -----------------------------------------------------------
(Updated April 27, 2015, 3:11 p.m.) Review request for Ambari, Jonathan Hurley and Nate Cole. Changes ------- updated testing Bugs: AMBARI-10748 https://issues.apache.org/jira/browse/AMBARI-10748 Repository: ambari Description ------- The main objective here is to make sure that we can include classes and jars in a view that don't conflict other versions of those classes used by Ambari. We also want to make sure that there aren't any other obstacles that prevent us from deploying Spring web apps as views. So far, I've found the following issues that need to be addressed to support Spring apps as views... 1. Class loading order. The classes in the WEB-INF/lib or WEB-INF/classes should have priority over classes on the parent class loader. There is a bug here. The fix involves minimal changes and is minimal risk, I think. Fixing the ClassLoader issue gets past the IllegalAccessError but exposes a couple of other issues for Spring apps. 2. Ambari's embedded Jetty server not setup to support JSP. 500 JSP support not configured This is really just configuration (make javac available) and making sure that the right jsp dependencies (jsp-2.1-glassfish, ant, ant-launcher) are included for ambari-server. Again, changes and risk are minimal. This is not Spring specific since we should support JSPs in any view. 3. Ambari internal usage of Spring. We currently use Spring to setup the Ambari web app and we set this as the root context for all of the deployed view web apps ... context.getServletContext().setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, springWebAppContext) This results in the following exception because the root web app context is from a different version of Spring loaded by a different class loader... java.lang.IllegalStateException: Context attribute is not of type WebApplicationContext: org.springframework.web.context.support.GenericWebApplicationContext@774189d0: startup date [Thu Jan 01 00:00:00 UTC 1970]; parent: org.springframework.context.support.ClassPathXmlApplicationContext@318511f0 at org.springframework.web.context.support.WebApplicationContextUtils.getWebApplicationContext(WebApplicationContextUtils.java:124) at org.springframework.web.context.support.WebApplicationContextUtils.getWebApplicationContext(WebApplicationContextUtils.java:99) at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:514) at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484) at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) at javax.servlet.GenericServlet.init(GenericServlet.java:241) Diffs ----- ambari-project/pom.xml 12ae96c ambari-server/pom.xml 896a202 ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariHandlerList.java 7c68311 ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java 8b767d7 ambari-server/src/main/java/org/apache/ambari/server/controller/FailsafeHandlerList.java 26395cc ambari-server/src/main/java/org/apache/ambari/server/controller/FailsafeServletResponse.java 094c4c5 ambari-server/src/main/java/org/apache/ambari/server/view/ViewArchiveUtility.java 8720d7c ambari-server/src/main/java/org/apache/ambari/server/view/ViewClassLoader.java PRE-CREATION ambari-server/src/main/java/org/apache/ambari/server/view/ViewExtractor.java fdce03c ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariHandlerListTest.java 04a4b15 ambari-server/src/test/java/org/apache/ambari/server/controller/FailsafeHandlerListTest.java 8d1ba0d ambari-server/src/test/java/org/apache/ambari/server/controller/FailsafeServletResponseTest.java 249a3f5 ambari-server/src/test/java/org/apache/ambari/server/view/ViewClassLoaderTest.java PRE-CREATION Diff: https://reviews.apache.org/r/33553/diff/ Testing (updated) ------- Manual testing with Spring app view (ambari-views/examples/hello-spring) and existing view examples. New unit tests added. All existing tests pass ... Results : Tests run: 2894, Failures: 0, Errors: 0, Skipped: 17 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 37:54 min [INFO] Finished at: 2015-04-25T07:34:25-04:00 [INFO] Final Memory: 52M/571M [INFO] ------------------------------------------------------------------------ Thanks, Tom Beerbower