diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 7be1cab..63242b5 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -55,7 +55,7 @@
 BUGS FROM PREVIOUS RELEASE
 ===========================
 
- * NONE
+ * [DIGESTER-155] ClassLoader reference set to DigesterLoader not set in produced Digetser instances
 
 IMPROVEMENTS OVER PREVIOUS RELEASE
 ===================================
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 506f3db..15e3408 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -23,6 +23,9 @@
   </properties>
   <body>
   <release version="3.2" date="201?-??-??" description="Maintenance release.">
+    <action dev="simonetripodi" type="fix" issue="DIGESTER-155">
+      ClassLoader reference set to DigesterLoader not set in produced Digetser instances
+    </action>
     <action dev="simonetripodi" type="add" issue="DIGESTER-153">
       Add Constructor support to ObjectCreateRule
     </action>
diff --git a/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java b/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java
index 5e91f25..c9017a7 100644
--- a/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java
+++ b/src/main/java/org/apache/commons/digester3/binder/DigesterLoader.java
@@ -107,8 +107,6 @@
 
     private final Iterable<RulesModule> rulesModules;
 
-    private boolean useContextClassLoader = true;
-
     /**
      * The class loader to use for instantiating application objects.
      * If not specified, the context class loader, or the class loader
@@ -159,6 +157,7 @@
     private DigesterLoader( Iterable<RulesModule> rulesModules )
     {
         this.rulesModules = rulesModules;
+        setUseContextClassLoader( true );
     }
 
     /**
@@ -173,7 +172,14 @@
      */
     public DigesterLoader setUseContextClassLoader( boolean useContextClassLoader )
     {
-        this.useContextClassLoader = useContextClassLoader;
+        if ( useContextClassLoader )
+        {
+            setClassLoader( Thread.currentThread().getContextClassLoader() );
+        }
+        else
+        {
+            setClassLoader( getClass().getClassLoader() );
+        }
         return this;
     }
 
@@ -185,6 +191,11 @@
      */
     public DigesterLoader setClassLoader( ClassLoader classLoader )
     {
+        if ( classLoader == null )
+        {
+            throw new IllegalArgumentException( "Parameter 'classLoader' cannot be null" );
+        }
+
         this.classLoader = classLoader;
         return this;
     }
@@ -539,6 +550,7 @@
         }
 
         Digester digester = new Digester( reader );
+        digester.setClassLoader( classLoader );
         digester.setRules( rules );
         digester.setSubstitutor( substitutor );
         digester.registerAll( entityValidator );
@@ -572,14 +584,9 @@
      */
     public RuleSet createRuleSet()
     {
-        ClassLoader contextClassLoader =
-            classLoader != null ? classLoader
-                            : ( useContextClassLoader ? Thread.currentThread().getContextClassLoader()
-                                            : getClass().getClassLoader() );
-
-        if ( !contextClassLoader.equals( rulesBinder.getContextClassLoader() ) )
+        if ( !classLoader.equals( rulesBinder.getContextClassLoader() ) )
         {
-            rulesBinder.initialize( contextClassLoader );
+            rulesBinder.initialize( classLoader );
             for ( RulesModule rulesModule : rulesModules )
             {
                 rulesModule.configure( rulesBinder );
diff --git a/src/test/java/org/apache/commons/digester3/binder/DigesterLoaderTestCase.java b/src/test/java/org/apache/commons/digester3/binder/DigesterLoaderTestCase.java
index 86dea27..e78ea14 100644
--- a/src/test/java/org/apache/commons/digester3/binder/DigesterLoaderTestCase.java
+++ b/src/test/java/org/apache/commons/digester3/binder/DigesterLoaderTestCase.java
@@ -124,4 +124,25 @@
         assertSame( expected, actual );
     }
 
+    @Test
+    public void digester155()
+    {
+        ClassLoader expected = getClass().getClassLoader();
+
+        Digester digester = newLoader( new AbstractRulesModule()
+        {
+
+            @Override
+            protected void configure()
+            {
+                // do nothing
+            }
+
+        } ).setClassLoader( expected ).newDigester();
+
+        ClassLoader actual = digester.getClassLoader();
+
+        assertSame( expected, actual );
+    }
+
 }
