On 20-03-2009 16:41, Francesco Chicchiriccò wrote:
[...]
The problem with Glassfish was quite silly, and also the current solution I've implemented is silly as well ;-)

As you can remember, the NullPointerException at
nl.hippo.cms.workflow.DashboardWorkflowQueriesGenerator.generate(DashboardWorkflowQueriesGenerator.java:44)
or
nl.hippo.cms.workflow.AvailableActionsGenerator.java(AvailableActionsGenerator.java:96) was related to the fact that the AvalonSpringBridge instance did not contain the "serverManager" bean.

Spending much time on debugging, I finally went to the AvalonSpringBridgeImpl and MultipleXmlContextLoader / MultipleXmlContextLoaderServlet; I finally could notice that the call to AvalonSpringBridge always occurred *before* the initialization in MultipleXmlContextLoader / MultipleXmlContextLoaderServlet took place. I went to the web.xml and I found that this servlet had <load-on-startup>0</load-on-startup>.

As you can read in [1], under issue 6172006, for Glassfish 2.1, <load-on-startup>0</load-on-startup> in web.xml means that servlet load order does not matter. Thus, I tried to change that value, with no success.

To solve this initialization order issue:

   * I added at the very beginning of
     MultipleXmlContextLoader.initWebApplicationContext() the following
     code:

       synchronized (this) {
Object wacAsObject = servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE); if (wacAsObject != null && wacAsObject instanceof WebApplicationContext)
                return (WebApplicationContext) wacAsObject;
        }

   * I modified AvalonSpringBridgeImpl.service() so that, when trying
     to get
     WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE from
     context, if null, it instantiates the (modified)
     MultipleXmlContextLoader and then call
     MultipleXmlContextLoader.initWebApplicationContext()

Using this approach, the first call that occurs, either from the servlet or from the AvalonSprinBridge, will do the right initialization.

Now the application is working correctly in Glassfish 2.1 / Sun Application Server 9.11.

Was my approach correct when solving the issue? Is there anything else - simpler or cleaner - to achieve the same result?

Thanks.

[1] http://docs.sun.com/app/docs/doc/820-4329/gawlb?a=view
--

Francesco Chicchiriccò
Delivery Manager

everett Italia ?
         TRUSTED TO *KNOW*

Head Office
Via Torino, 2 - 20123 Milano - Italia
Tel:
+39 02 72546847
Fax:
+39 02 72546418
Technology Centre
Via Federico Fellini, 2 G2/1 - 65010 Spoltore (PE) - Italia
Tel:
+39 085 2120342 / +39 085 2120537
Fax:
+39 085 2120342 / +39 085 2120537

Mob:
+39 329 0573276
e-mail:
[email protected] <mailto:[email protected]>
Web:
http://www.everett.it
********************************************
Hippocms-dev: Hippo CMS development public mailinglist

Searchable archives can be found at:
MarkMail: http://hippocms-dev.markmail.org
Nabble: http://www.nabble.com/Hippo-CMS-f26633.html

Reply via email to