diff --git a/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactoryException.java b/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactoryException.java
index 41d7639..1670fe7 100644
--- a/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactoryException.java
+++ b/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactoryException.java
@@ -36,7 +36,6 @@
      */
     public DefinitionsFactoryException() {
         super();
-        this.exception = null;
     }
 
     /**
@@ -46,7 +45,6 @@
      */
     public DefinitionsFactoryException(String message) {
         super(message);
-        this.exception = null;
     }
 
 
@@ -60,8 +58,7 @@
      * @param e The exception to be wrapped.
      */
     public DefinitionsFactoryException(Exception e) {
-        super();
-        this.exception = e;
+        super(e);
     }
 
 
@@ -75,49 +72,6 @@
      * @param e       The exception to be wrapped.
      */
     public DefinitionsFactoryException(String message, Exception e) {
-        super(message);
-        this.exception = e;
+        super(message, e);
     }
-
-
-    /**
-     * Return a detail message for this exception.
-     * <p/>
-     * <p>If there is a embedded exception, and if the DefinitionsFactoryException
-     * has no detail message of its own, this method will return
-     * the detail message from the embedded exception.</p>
-     *
-     * @return The error or warning message.
-     */
-    public String getMessage() {
-        String message = super.getMessage();
-
-        if (message == null && exception != null) {
-            return exception.getMessage();
-        } else {
-            return message;
-        }
-    }
-
-
-    /**
-     * Return the embedded exception, if any.
-     *
-     * @return The embedded exception, or <code>null</code> if there is none.
-     */
-    public Exception getException() {
-        return exception;
-    }
-
-    //////////////////////////////////////////////////////////////////////
-    // Internal state.
-    //////////////////////////////////////////////////////////////////////
-
-
-    /**
-     * Any "wrapped" exception will be exposed when this is serialized.
-     *
-     * @serial
-     */
-    private Exception exception;
 }
diff --git a/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java b/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
index 25cf2f2..469b0f0 100644
--- a/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
+++ b/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
@@ -166,9 +166,9 @@
     private Map<String, Definition> definitions;
     /**
      * Should we use a validating XML parser to read the configuration file.
-     * Default is <code>false</code>.
+     * Default is <code>true</code>.
      */
-    protected boolean validating = false;
+    protected boolean validating = true;
     /**
      * The set of public identifiers, and corresponding resource names for
      * the versions of the configuration file DTDs we know about.  There
diff --git a/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java b/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
index 700a63c..9c1a732 100644
--- a/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
+++ b/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
@@ -198,11 +198,10 @@
      * configuration file with invalid XML.
      */
     public void testValidatingParameter() {
+        // Testing with default (validation ON).
         try {
             DefinitionsReader reader = new DigesterDefinitionsReader();
             Map<String, String> params = new HashMap<String, String>();
-            params.put(DigesterDefinitionsReader.PARSER_VALIDATE_PARAMETER_NAME,
-                    "true");
             reader.init(params);
 
             URL configFile = this.getClass().getClassLoader().getResource(
@@ -220,5 +219,25 @@
         } catch (Exception e) {
             fail("Exception reading configuration." + e);
         }
+
+        // Testing with validation OFF.
+        try {
+            DefinitionsReader reader = new DigesterDefinitionsReader();
+            Map<String, String> params = new HashMap<String, String>();
+            params.put(DigesterDefinitionsReader.PARSER_VALIDATE_PARAMETER_NAME,
+                    "false");
+            reader.init(params);
+
+            URL configFile = this.getClass().getClassLoader().getResource(
+                    "org/apache/tiles/config/invalid-defs.xml");
+            assertNotNull("Config file not found", configFile);
+
+            InputStream source = configFile.openStream();
+            reader.read(source);
+        } catch (DefinitionsFactoryException e) {
+            fail("Should not have thrown an exception." + e);
+        } catch (Exception e) {
+            fail("Exception reading configuration." + e);
+        }
     }
 }
