diff -rupN original/jsf-ri/src/com/sun/faces/config/ConfigManager.java patched/jsf-ri/src/com/sun/faces/config/ConfigManager.java
--- original/jsf-ri/src/com/sun/faces/config/ConfigManager.java	2011-10-10 00:45:47.596355000 -0400
+++ patched/jsf-ri/src/com/sun/faces/config/ConfigManager.java	2011-10-10 02:12:21.790355001 -0400
@@ -59,6 +59,7 @@ import com.sun.faces.config.processor.Re
 import com.sun.faces.config.processor.ValidatorConfigProcessor;
 import com.sun.faces.util.FacesLogger;
 import com.sun.faces.util.Timer;
+import com.sun.faces.util.Util;
 import org.w3c.dom.Document;
 import org.xml.sax.InputSource;
 
@@ -453,14 +454,14 @@ public class ConfigManager {
                  */
                 if (FACES_SCHEMA_DEFAULT_NS.equals(((Document) domSource.getNode()).getDocumentElement().getNamespaceURI())) {
                     DocumentBuilder builder = getBuilderForSchema(DbfFactory.FacesSchema.FACES_12);
-                    builder.getSchema().newValidator().validate(domSource);
+                    Util.newValidator(builder).validate(domSource);
                     return ((Document) domSource.getNode());
                 } else {
                     DOMResult domResult = new DOMResult();
                     Transformer transformer = getTransformer();
                     transformer.transform(domSource, domResult);
                     DocumentBuilder builder = getBuilderForSchema(DbfFactory.FacesSchema.FACES_11);
-                    builder.getSchema().newValidator().validate(new DOMSource(domResult.getNode()));
+                    Util.newValidator(builder).validate(new DOMSource(domResult.getNode()));
                     return (Document) domResult.getNode();
                 }
             } else {
@@ -472,7 +473,6 @@ public class ConfigManager {
             }
         }
 
-
         /**
          * Obtain a <code>Transformer</code> using the style sheet
          * referenced by the <code>XSL</code> constant.
@@ -482,7 +482,8 @@ public class ConfigManager {
          */
         private static Transformer getTransformer() throws Exception {
 
-            TransformerFactory factory = TransformerFactory.newInstance();
+            TransformerFactory factory = Util.createTransformerFactory();
+
             return factory
                  .newTransformer(new StreamSource(getInputStream(ConfigManager
                       .class.getResource(XSL))));
@@ -504,13 +505,11 @@ public class ConfigManager {
 
         }
 
-
-
         private DocumentBuilder getNonValidatingBuilder() throws Exception {
 
-            DocumentBuilderFactory tFactory = DbfFactory.getFactory();
+           DocumentBuilderFactory tFactory = DbfFactory.getFactory();
             tFactory.setValidating(false);
-            DocumentBuilder tBuilder = tFactory.newDocumentBuilder();
+            DocumentBuilder tBuilder = Util.newDocumentBuilder(tFactory);
             tBuilder.setEntityResolver(DbfFactory.FACES_ENTITY_RESOLVER);
             tBuilder.setErrorHandler(DbfFactory.FACES_ERROR_HANDLER);
             return tBuilder;
@@ -519,13 +518,13 @@ public class ConfigManager {
 
         private DocumentBuilder getBuilderForSchema(DbfFactory.FacesSchema schema)
         throws Exception {
+
             factory.setSchema(schema.getSchema());
-            DocumentBuilder builder = factory.newDocumentBuilder();
+            DocumentBuilder builder = Util.newDocumentBuilder(factory);
             builder.setEntityResolver(DbfFactory.FACES_ENTITY_RESOLVER);
             builder.setErrorHandler(DbfFactory.FACES_ERROR_HANDLER);
             return builder;
-        }
-
+	}
     } // END ParseTask
 
 
diff -rupN original/jsf-ri/src/com/sun/faces/config/ConfigureListener.java patched/jsf-ri/src/com/sun/faces/config/ConfigureListener.java
--- original/jsf-ri/src/com/sun/faces/config/ConfigureListener.java	2011-10-10 00:45:47.595355000 -0400
+++ patched/jsf-ri/src/com/sun/faces/config/ConfigureListener.java	2011-10-10 02:12:21.792355004 -0400
@@ -673,7 +673,7 @@ public class ConfigureListener implement
 
             SAXParserFactory factory = getConfiguredFactory();
             try {
-                SAXParser parser = factory.newSAXParser();
+                SAXParser parser = Util.newSAXParser(factory);
                 parser.parse(context.getResourceAsStream(WEB_XML_PATH),
                               new WebXmlHandler());
             } catch (Exception e) {
@@ -699,7 +699,7 @@ public class ConfigureListener implement
          */
         private SAXParserFactory getConfiguredFactory() {
 
-            SAXParserFactory factory = SAXParserFactory.newInstance();
+            SAXParserFactory factory = Util.createSAXParserFactory();
             factory.setValidating(false);
             factory.setNamespaceAware(true);
             return factory;
diff -rupN original/jsf-ri/src/com/sun/faces/config/DbfFactory.java patched/jsf-ri/src/com/sun/faces/config/DbfFactory.java
--- original/jsf-ri/src/com/sun/faces/config/DbfFactory.java	2011-10-10 00:45:47.595355000 -0400
+++ patched/jsf-ri/src/com/sun/faces/config/DbfFactory.java	2011-10-10 02:12:21.793355003 -0400
@@ -36,6 +36,7 @@
 
 package com.sun.faces.config;
 
+import com.sun.faces.util.Util;
 import org.xml.sax.*;
 import org.xml.sax.helpers.DefaultHandler;
 import org.w3c.dom.ls.LSResourceResolver;
@@ -127,7 +128,7 @@ public class DbfFactory {
 
     public static DocumentBuilderFactory getFactory() {
 
-        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+        DocumentBuilderFactory factory = Util.createDocumentBuilderFactory();
         factory.setNamespaceAware(true);
         factory.setIgnoringComments(true);
         factory.setIgnoringElementContentWhitespace(true);
@@ -146,7 +147,7 @@ public class DbfFactory {
             URLConnection conn = url.openConnection();
             conn.setUseCaches(false);
             InputStream in = conn.getInputStream();
-            SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+            SchemaFactory factory = Util.createSchemaFactory(XMLConstants.W3C_XML_SCHEMA_NS_URI);
             factory.setResourceResolver((LSResourceResolver) DbfFactory.FACES_ENTITY_RESOLVER);
             FACES_12_SCHEMA = factory.newSchema(new StreamSource(in));
 
@@ -154,7 +155,7 @@ public class DbfFactory {
             conn = url.openConnection();
             conn.setUseCaches(false);
             in = conn.getInputStream();
-            factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+            factory = Util.createSchemaFactory(XMLConstants.W3C_XML_SCHEMA_NS_URI);
             factory.setResourceResolver((LSResourceResolver) DbfFactory.FACES_ENTITY_RESOLVER);
             FACES_11_SCHEMA = factory.newSchema(new StreamSource(in));
 
diff -rupN original/jsf-ri/src/com/sun/faces/util/Util.java patched/jsf-ri/src/com/sun/faces/util/Util.java
--- original/jsf-ri/src/com/sun/faces/util/Util.java	2011-10-10 00:45:47.598355000 -0400
+++ patched/jsf-ri/src/com/sun/faces/util/Util.java	2011-10-10 02:12:21.789354998 -0400
@@ -64,6 +64,14 @@ import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.util.regex.Pattern;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.validation.Validator;
 
 /**
  * <B>Util</B> is a class ...
@@ -196,6 +204,95 @@ public class Util {
         return htmlTLVEnabled;
     }
 
+    public static TransformerFactory createTransformerFactory() {
+         ClassLoader cl = Thread.currentThread().getContextClassLoader();
+         TransformerFactory factory;
+         try {
+             Thread.currentThread().setContextClassLoader(Util.class.getClassLoader());
+             factory = TransformerFactory.newInstance();
+         } finally {
+             Thread.currentThread().setContextClassLoader(cl);
+         }
+         return factory;
+     }
+ 
+    public static SAXParserFactory createSAXParserFactory() {
+        ClassLoader cl = Thread.currentThread().getContextClassLoader();
+        SAXParserFactory factory;
+        try {
+            Thread.currentThread().setContextClassLoader(Util.class.getClassLoader());
+            factory = SAXParserFactory.newInstance();
+        } finally {
+            Thread.currentThread().setContextClassLoader(cl);
+        }
+        return factory;
+    }
+
+    public static DocumentBuilderFactory createDocumentBuilderFactory() {
+        ClassLoader cl = Thread.currentThread().getContextClassLoader();
+        DocumentBuilderFactory factory;
+        try {
+            Thread.currentThread().setContextClassLoader(Util.class.getClassLoader());
+            factory = DocumentBuilderFactory.newInstance();
+        } finally {
+            Thread.currentThread().setContextClassLoader(cl);
+        }
+        return factory;
+    }
+
+    public static SchemaFactory createSchemaFactory(String uri) {
+        ClassLoader cl = Thread.currentThread().getContextClassLoader();
+        SchemaFactory factory;
+        try {
+            Thread.currentThread().setContextClassLoader(Util.class.getClassLoader());
+            factory = SchemaFactory.newInstance(uri);
+        } finally {
+            Thread.currentThread().setContextClassLoader(cl);
+        }
+        return factory;
+    }
+
+    public static DocumentBuilder newDocumentBuilder(DocumentBuilderFactory factory) throws Exception
+    {
+        ClassLoader previous = Thread.currentThread().getContextClassLoader();
+        try
+        {
+            Thread.currentThread().setContextClassLoader(Util.class.getClassLoader());
+            return factory.newDocumentBuilder();
+        }
+        finally
+        {
+            Thread.currentThread().setContextClassLoader(previous);
+        }
+    }
+
+    public static SAXParser newSAXParser(SAXParserFactory factory) throws Exception
+    {
+        ClassLoader previous = Thread.currentThread().getContextClassLoader();
+        try
+        {
+            Thread.currentThread().setContextClassLoader(Util.class.getClassLoader());
+            return factory.newSAXParser();
+        }
+        finally
+        {
+            Thread.currentThread().setContextClassLoader(previous);
+        }
+    }
+
+    public static Validator newValidator(DocumentBuilder builder)
+    {
+        ClassLoader previous = Thread.currentThread().getContextClassLoader();
+        try
+        {
+            Thread.currentThread().setContextClassLoader(Util.class.getClassLoader());
+            return builder.getSchema().newValidator();
+        }
+        finally
+        {
+            Thread.currentThread().setContextClassLoader(previous);
+        }
+    }
 
     public static Class loadClass(String name,
                                   Object fallbackClass)
