----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/33553/#review81684 -----------------------------------------------------------
Ship it! Ship It! - Jonathan Hurley On April 27, 2015, 11:11 a.m., Tom Beerbower wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/33553/ > ----------------------------------------------------------- > > (Updated April 27, 2015, 11:11 a.m.) > > > Review request for Ambari, Jonathan Hurley and Nate Cole. > > > 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 > ------- > > 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 > >