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> errors = new ThreadLocal<Errors>() {
-        protected synchronized Errors initialValue() {
-            return new Errors();
-        }
-    };
+    private static final ThreadLocal<Errors> errors = new ThreadLocal<Errors>();
 
     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<T> {