[jbossws-commits] JBossWS SVN: r10322 - common/trunk/src/main/java/org/jboss/wsf/common.

jbossws-commits at lists.jboss.org jbossws-commits at lists.jboss.org
Tue Jul 14 13:22:45 EDT 2009


Author: alessio.soldano at jboss.com
Date: 2009-07-14 13:22:44 -0400 (Tue, 14 Jul 2009)
New Revision: 10322

Modified:
   common/trunk/src/main/java/org/jboss/wsf/common/DOMUtils.java
Log:
[JBWS-2554] Prevent concurrent parsing on the same DocumentBuilder instance


Modified: common/trunk/src/main/java/org/jboss/wsf/common/DOMUtils.java
===================================================================
--- common/trunk/src/main/java/org/jboss/wsf/common/DOMUtils.java	2009-07-14 08:20:46 UTC (rev 10321)
+++ common/trunk/src/main/java/org/jboss/wsf/common/DOMUtils.java	2009-07-14 17:22:44 UTC (rev 10322)
@@ -26,9 +26,9 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Reader;
-import java.util.LinkedList;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
@@ -130,7 +130,7 @@
             builder.setEntityResolver(entityResolver);
       }
    };
-
+   
    public static void clearThreadLocals()
    {
       documentThreadLocal.remove();
@@ -170,7 +170,13 @@
    {
       try
       {
-         return getDocumentBuilder().parse(xmlStream).getDocumentElement();
+         Document doc;
+         DocumentBuilder builder = getDocumentBuilder();
+         synchronized (builder) //synchronize to prevent concurrent parsing on the same DocumentBuilder
+         {
+            doc = builder.parse(xmlStream);
+         }
+         return doc.getDocumentElement();
       }
       catch (SAXException se)
       {
@@ -188,7 +194,13 @@
    {
       try
       {
-         return getDocumentBuilder().parse(source).getDocumentElement();
+         Document doc;
+         DocumentBuilder builder = getDocumentBuilder();
+         synchronized (builder) //synchronize to prevent concurrent parsing on the same DocumentBuilder
+         {
+            doc = builder.parse(source);
+         }
+         return doc.getDocumentElement();
       }
       catch (SAXException se)
       {




More information about the jbossws-commits mailing list