Index: src/main/java/com/sun/jersey/spi/inject/Errors.java =================================================================== --- src/main/java/com/sun/jersey/spi/inject/Errors.java (revision 4329) +++ src/main/java/com/sun/jersey/spi/inject/Errors.java (working copy) @@ -132,9 +132,11 @@ stack--; fieldReporting = true; - if (stack == 0 && !messages.isEmpty()) { + if (stack == 0) { try { - processErrorMessages(throwException, messages); + if (!messages.isEmpty()) { + processErrorMessages(throwException, messages); + } } finally { errors.remove(); } @@ -174,14 +176,15 @@ } } - private static ThreadLocal errors = new ThreadLocal() { - protected synchronized Errors initialValue() { - return new Errors(); - } - }; + private static final ThreadLocal errors = new ThreadLocal(); private static Errors getInstance() { - return errors.get(); + Errors instance = errors.get(); + if (instance == null) { + instance = new Errors(); + errors.set(instance); + } + return instance; } public static interface Closure {