Andreas Hartmann schrieb:
Hi Cocoon devs,
I get an NPE in an embedded servlet (CXFServlet from Apache CXF) because
it references the servletConfig when onApplicationEvent() is processed.
Apparently this happens because the ServletFactoryBean calls
container.refresh()
before
this.embeddedServlet.init(blockServletConfig).
Does someone know how this relates to the servlet spec? Is the error on
the Cocoon side or on the CXF side? Can I change the order of the calls
as a workaround, or would this lead to unpredictable side effects?
Apparently the SitemapServlet relies on this execution order, i.e. it
expects the WebApplicationContext to be set before init() is called:
java.lang.IllegalStateException: No WebApplicationContext found: no
ContextLoaderListener registered?
at
org.springframework.web.context.support.WebApplicationContextUtils.getRequiredWebApplicationContext(WebApplicationContextUtils.java:70)
at
org.apache.cocoon.servlet.RequestProcessor.<init>(RequestProcessor.java:89)
at
org.apache.cocoon.sitemap.SitemapServlet$RequestProcessor.<init>(SitemapServlet.java:98)
at org.apache.cocoon.sitemap.SitemapServlet.init(SitemapServlet.java:74)
at javax.servlet.GenericServlet.init(GenericServlet.java:241)
Would it make sense to use some kind of lazy loading here? Without
further investigation it seems more reasonable to initialize the servlet
before refreshing the context.
WDYT?
-- Andreas
--
Andreas Hartmann, CTO
BeCompany GmbH
http://www.becompany.ch
Tel.: +41 (0) 43 818 57 01