[Proposal] Dyanmic console module loading for multi-product in EAP6*
by Jason Greene
In order to support multiple derived products based on EAP, we need a solution that allows the console to "emulate" plug-ability. By "emulate", I mean that until we have a dynamic rendering engine (AS8/EAP7), we still have to deal with the fact that GWT requires static compilation.
The first component of the proposal is that the console have a serial version stream which includes *all* plugins. Every derivative product will need to contribute a plugin which is pulled into the serial version stream via reference. This means that every console release will need to verify compatibility with old and new versions of all products. This should not be too big of a deal because the management policies require that we maintain compatibility anyway.
The second component is that every product (and its patch updates if features are added) will bundle a version of the console which includes support for the product. At runtime the server will then simply pick the most recent version available. This will allow for every copy to maintain a clear ownership. So for example, if you install a patch which brings in console version 1.7, that version can be removed and the other available versions can be used.
An example is:
/consoles/1.1 (Installed by EAP)
/consoles/1.2 (Installed by Portal)
/consoles/1.3 (Installed by BRMS)
/consoles/1.4 (installed by a Portal patch)
So in this case the server would start with 1.4. If BRMS was removed, 1.4 would be picked. If the portal patch was then rolled back, 1.2 would be picked.
Alternatively we could always just leave all versions, and always pick the most recent console version, however rollbacks would be an issue. We would need some way for the user to manually revert if there was a bug (perhaps just having them delete the bad version).
-Jason
12 years
as7-master-testsuite-ip6 - Build # 6277 - Failure!
by ci-builds@redhat.com
as7-master-testsuite-ip6 - Build # 6277 - Failure:
Check console output at to view the results.
Public: http://hudson.jboss.org/hudson/job/as7-master-testsuite-ip6/6277
Internal: http://lightning.mw.lab.eng.bos.redhat.com/jenkins/job/as7-master-testsui...
Test summary:
1 tests failed.
REGRESSION: org.jboss.as.test.integration.osgi.deployment.BundleReplaceTestCase.testBundleReplace
Error Message:
java.util.concurrent.ExecutionException: java.io.IOException: <html><head><title>JBoss Web/7.2.0.Alpha5 - JBWEB000064: Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>JBWEB000065: HTTP Status 500 - No resources</h1><HR size="1" noshade="noshade"><p><b>JBWEB000309: type</b> JBWEB000066: Exception report</p><p><b>JBWEB000068: message</b> <u>No resources</u></p><p><b>JBWEB000069: description</b> <u>JBWEB000145: The server encountered an internal error that prevented it from fulfilling this request.</u></p><p><b>JBWEB000070: exception</b> <pre>javax.servlet.ServletException: No resources org.apache.catalina.servlets.DefaultServlet.init(DefaultServlet.java:278) javax.servlet.GenericServlet.init(GenericServlet.java:242) org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:652) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:919) java.lang.Thread.run(Thread.java:662) </pre></p><p><b>JBWEB000071: root cause</b> <pre>javax.naming.NameNotFoundException: comp/Resources -- service jboss.naming.context.java.comp.Resources org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:103) org.jboss.as.naming.NamingContext.lookup(NamingContext.java:197) org.jboss.as.naming.InitialContext.lookup(InitialContext.java:120) org.jboss.as.naming.NamingContext.lookup(NamingContext.java:183) org.jboss.as.naming.NamingContext.lookup(NamingContext.java:179) javax.naming.InitialContext.lookup(InitialContext.java:392) org.apache.catalina.servlets.DefaultServlet.init(DefaultServlet.java:273) javax.servlet.GenericServlet.init(GenericServlet.java:242) org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:652) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:919) java.lang.Thread.run(Thread.java:662) </pre></p><p><b>JBWEB000072: note</b> <u>JBWEB000073: The full stack trace of the root cause is available in the JBoss Web/7.2.0.Alpha5 logs.</u></p><HR size="1" noshade="noshade"><h3>JBoss Web/7.2.0.Alpha5</h3></body></html>
12 years