In either case, I've added some guards to the servlet for 2.2.6 to prevent 
these exceptions.   Thus, it should be OK with 2.2.6.  :-)

Dan


On Mon January 18 2010 4:09:54 pm William Blackburn wrote:
> I've been working on this more - and it now appears to me to have more to
>  do with some change to application-event handling in Spring between 2.5.6
>  and 3.0. The code that fails in CXFServlet under Spring 3.0 is at line
>  125:
> 
>         resourceManager.addResourceResolver(new
>  ServletContextResourceResolver(servletConfig.getServletContext()));
> 
> specifically 'servletConfig' is null when the sample code is run under
>  Spring 3.0 and is valid when run with 2.5.6. I have discovered that the
>  problem is with the implementation of 'onApplicationEvent' in CXFServlet.
> 
> I added some tracing to this code. Under Spring 2.5.6 - I saw no evidence
>  that this method was ever called at all. When running under Spring 3.0
>  this method was called multiple times - the first call happening BEFORE
>  servletConfig was actually available, and subsequently two more times,
>  resulting in unnecessary context updates that resulted in this information
>  log entry:
> 
>         INFO: Servlet transport factory already registered
> 
> It seems that at minimum, the execution of 'updateContext' should only
>  happen if the ServletConfig is non-null. It also appears that the use of
>  the 'inRefresh' flag is insufficient to guard against rapid fire repeat
>  events as seem to be raised in Spring 3.0.
> 
> Hope this helps and I apologize for not having all the information when I
>  posted the first time.
> 
> B.J.
> 
> On Jan 15, 2010, at 10:40 AM, William Blackburn wrote:
> > I have been using CXF 2.2.3 with Spring 2.5.6 and an embedded Jetty
> > instance successfully for several months. After the release of Spring
> > 3.0, I have tried migrating to the new Spring version. Now the CXF
> > Servlet is failing with a nullpointerexception on the 'updateContext'
> > method:
> >
> > Caused by: java.lang.NullPointerException
> >     at
> > org.apache.cxf.transport.servlet.CXFServlet.updateContext(CXFServlet.java
> >:125) at
> > org.apache.cxf.transport.servlet.CXFServlet.onApplicationEvent(CXFServlet
> >.java:182) at
> > org.springframework.context.event.SimpleApplicationEventMulticaster.multi
> >castEvent(SimpleApplicationEventMulticaster.java:97) at
> > org.springframework.context.support.AbstractApplicationContext.publishEve
> >nt(AbstractApplicationContext.java:294) at
> > org.springframework.context.support.AbstractApplicationContext.publishEve
> >nt(AbstractApplicationContext.java:296) at
> > org.springframework.context.support.AbstractApplicationContext.finishRefr
> >esh(AbstractApplicationContext.java:858) at
> > org.springframework.context.support.AbstractApplicationContext.refresh(Ab
> >stractApplicationContext.java:419)
> >
> > The line that is failing is:
> >
> >    resourceManager.addResourceResolver(new
> > ServletContextResourceResolver(servletConfig.getServletContext()));
> >
> > Since Spring doesn't seem to even be involved in this line, I can't see
> > why the move from 2.5.6 to 3.0 would even have caused this, but its the
> > only change I made before it started failing.
> >
> > Has anyone else seen this? I tried using CXF 2.2.5 and had the same
> > result, so I am wondering if CXF's current GA release is even compatible
> > with Spring 3?
> >
> > Thanks for any help at all.
> >
> > BJ
> 

-- 
Daniel Kulp
[email protected]
http://www.dankulp.com/blog

Reply via email to