ClassCastException in CXFServlet.loadSpringBus when context initialization fails
--------------------------------------------------------------------------------
Key: CXF-906
URL: https://issues.apache.org/jira/browse/CXF-906
Project: CXF
Issue Type: Bug
Components: Core
Affects Versions: 2.0
Environment: using Spring Framework 2.1 m2
Reporter: Karl Goldstein
Priority: Minor
CXFServlet.java line 136 obtains the Spring application context from the
servlet context:
if (ctx == null) {
ctx = (ApplicationContext)svCtx
.getAttribute("org.springframework.web.context.WebApplicationContext.ROOT");
}
If the Spring application context failed to load however, Spring (somewhat
inexplicably) sets this attribute to be the exception rather than the context.
See org/springframework/web/context/ContextLoader.java line 202:
catch (RuntimeException ex) {
logger.error("Context initialization failed", ex);
servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
ex);
throw ex;
}
To avoid repeated ClassCastExceptions that obscure the underlying problem with
the Spring application context, CXFServlet should check the type of the
attribute before attempting to cast to ApplicationContext:
if (ctx == null) {
Object ctxObject = svCtx
.getAttribute("org.springframework.web.context.WebApplicationContext.ROOT");
if (ctxObject instanceof ApplicationContext) {
ctx = (ApplicationContext) ctxObject;
}
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.