On Tuesday 20 April 2010 9:40:51 am moslm wrote:
> Hi Daniel,
> 
> thanks for the fix. Just verified it with the SNAPSHOT version and yes it
> works.
> 
> Any schedule when 2.2.8 will be released?

Probably mid May or so.   Maybe earlier.   Depends on if we get patches and 
such for a bunch of the other issues.   :-)

I'd also like to get a new wss4j release in, but that requires some extra 
coordination. 

Dan


> 
> Cheers
> Mos
> 
> dkulp wrote:
> > On Friday 16 April 2010 9:12:27 am moslm wrote:
> >> I'm using CXF 2.2.5, running on Java 1.6 and Tomcat 6.18.
> >> 
> >> When the Tomcat server is stopped, we get always the following
> >> NullPointerException:
> >> 
> >> INFO: Stopping Coyote HTTP/1.1 on http-8080
> >> Exception in thread "Thread-14" java.lang.NullPointerException
> >> 
> >>    at org.apache.cxf.helpers.FileUtils.removeDir(FileUtils.java:126)
> >>    at org.apache.cxf.helpers.FileUtils$1.run(FileUtils.java:75)
> >> 
> >> I did a little debugging:
> >> 
> >> During the first usage of CXF the FileUtils.getDefaultTempDir() is
> >> called.
> >> It resolves the tmp-dir correctly. At the end the
> >> "private static File defaultTempDir" is set to the right directory.
> >> 
> >> Then the method schedules the removal of the tmp-dir like this:
> >>              Thread hook = new Thread() {
> >>              
> >>                 @Override
> >>                 public void run() {
> >>                 
> >>                     removeDir(defaultTempDir);
> >>                 
> >>                 }
> >>             
> >>             };
> >>             Runtime.getRuntime().addShutdownHook(hook);
> >> 
> >> So far, so good.  When stopping Tomcat (== stopping the JVM) the hook is
> >> "fired".
> >> The removeDir(defaultTempDir) is called. But "defaultTempDir" is 'null'
> >> and
> >> in consequence
> >> the NPE is thrown.
> >> 
> >> Any idea why the static defaultTempDir is lost when the ShutdownHooks
> >> are fired?  A Bug?
> > 
> > Hmm..  very strange.   Maybe part of the classloader is GC'd before the
> > hook
> > 
> > is set?   Fairly easy to fix I think:
> >             final File f2 = f;
> >             Thread hook = new Thread() {
> >             
> >                 @Override
> >                 public void run() {
> >                 
> >                     removeDir(f2);
> >                 
> >                 }
> >             
> >             };
> > 
> > to make it not use the static and instead use an instance field for the
> > hook.
> > I'll commit that.

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

Reply via email to