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