diff --git a/core/pom.xml b/core/pom.xml
index 5a642bf..54761cd 100755
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -60,20 +60,6 @@
     </dependency>
 
     <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-server</artifactId>
-      <version>9.1.0.v20131115</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-servlet</artifactId>
-      <version>9.1.0.v20131115</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <scope>test</scope>
diff --git a/core/src/main/java/flex/messaging/endpoints/AbstractEndpoint.java b/core/src/main/java/flex/messaging/endpoints/AbstractEndpoint.java
index c265ea9..6bc8c88 100644
--- a/core/src/main/java/flex/messaging/endpoints/AbstractEndpoint.java
+++ b/core/src/main/java/flex/messaging/endpoints/AbstractEndpoint.java
@@ -109,6 +109,7 @@
     private static final String LEGACY_THROWABLE = "legacy-throwable";
     private static final String LEGACY_BIG_NUMBERS = "legacy-big-numbers";
     private static final String LEGACY_EXTERNALIZABLE = "legacy-externalizable";
+    private static final String ALLOW_XML = "allow-xml";
     private static final String ALLOW_XML_DOCTYPE_DECLARATION = "allow-xml-doctype-declaration";
     private static final String ALLOW_XML_EXTERNAL_ENTITY_EXPANSION = "allow-xml-external-entity-expansion";
 
@@ -279,6 +280,7 @@
             serializationContext.legacyThrowable = serialization.getPropertyAsBoolean(LEGACY_THROWABLE, false);
             serializationContext.legacyBigNumbers = serialization.getPropertyAsBoolean(LEGACY_BIG_NUMBERS, false);
             serializationContext.legacyExternalizable = serialization.getPropertyAsBoolean(LEGACY_EXTERNALIZABLE, false);
+            serializationContext.allowXml = serialization.getPropertyAsBoolean(ALLOW_XML, false);
             serializationContext.allowXmlDoctypeDeclaration = serialization.getPropertyAsBoolean(ALLOW_XML_DOCTYPE_DECLARATION, false);
             serializationContext.allowXmlExternalEntityExpansion = serialization.getPropertyAsBoolean(ALLOW_XML_EXTERNAL_ENTITY_EXPANSION, false);
             serializationContext.maxObjectNestLevel = (int)serialization.getPropertyAsLong(MAX_OBJECT_NEST_LEVEL, 512);
diff --git a/core/src/main/java/flex/messaging/io/SerializationContext.java b/core/src/main/java/flex/messaging/io/SerializationContext.java
index 9ffe17c..79bb2d7 100644
--- a/core/src/main/java/flex/messaging/io/SerializationContext.java
+++ b/core/src/main/java/flex/messaging/io/SerializationContext.java
@@ -80,6 +80,7 @@
     // Similarly like how many dimensional matrix that we support for serialization.
     public int maxCollectionNestLevel = 15;
 
+    public boolean allowXml = false;
     public boolean allowXmlDoctypeDeclaration = false;
     public boolean allowXmlExternalEntityExpansion = false;
 
@@ -228,6 +229,7 @@
             context.deserializationValidator = deserializationValidator;
             context.maxObjectNestLevel = maxObjectNestLevel;
             context.maxCollectionNestLevel = maxCollectionNestLevel;
+            context.allowXml = allowXml;
             context.allowXmlDoctypeDeclaration = allowXmlDoctypeDeclaration;
             context.allowXmlExternalEntityExpansion = allowXmlExternalEntityExpansion;
             context.preferVectors = preferVectors;
diff --git a/core/src/main/java/flex/messaging/io/amf/Amf0Input.java b/core/src/main/java/flex/messaging/io/amf/Amf0Input.java
index fa66ae9..619f453 100644
--- a/core/src/main/java/flex/messaging/io/amf/Amf0Input.java
+++ b/core/src/main/java/flex/messaging/io/amf/Amf0Input.java
@@ -29,6 +29,8 @@
 import flex.messaging.io.SerializationContext;
 import flex.messaging.io.SerializationException;
 import flex.messaging.io.UnknownTypeException;
+import flex.messaging.log.Log;
+import flex.messaging.log.LogCategories;
 import flex.messaging.util.ClassUtil;
 
 /**
@@ -510,10 +512,18 @@
     {
         String xml = readLongUTF();
 
-        if (isDebug)
+        if (isDebug) {
             trace.write(xml);
+        }
 
-        return stringToDocument(xml);
+        // Only deserialize xml if this is enabled.
+        if (context.allowXml) {
+            return stringToDocument(xml);
+        } else {
+            Log.getLogger(LogCategories.CONFIGURATION).warn(
+                    "Xml deserialization is disabled, please enable by setting allowXml to 'true'");
+            return null;
+        }
     }
 
 
diff --git a/core/src/main/java/flex/messaging/io/amf/Amf3Input.java b/core/src/main/java/flex/messaging/io/amf/Amf3Input.java
index 0e62b88..33109f6 100644
--- a/core/src/main/java/flex/messaging/io/amf/Amf3Input.java
+++ b/core/src/main/java/flex/messaging/io/amf/Amf3Input.java
@@ -33,6 +33,8 @@
 import flex.messaging.io.SerializationException;
 import flex.messaging.io.UnknownTypeException;
 import flex.messaging.io.amf.AmfTrace.VectorType;
+import flex.messaging.log.Log;
+import flex.messaging.log.LogCategories;
 import flex.messaging.util.ClassUtil;
 import flex.messaging.util.Trace;
 
@@ -982,7 +984,14 @@
                 trace.write(xml);
         }
 
-        return stringToDocument(xml);
+        // Only deserialize xml if this is enabled.
+        if (context.allowXml) {
+            return stringToDocument(xml);
+        } else {
+            Log.getLogger(LogCategories.CONFIGURATION).warn(
+                    "Xml deserialization is disabled, please enable by setting allowXml to 'true'");
+            return null;
+        }
     }
 
     /**
diff --git a/core/src/main/java/flex/messaging/io/amf/client/AMFConnection.java b/core/src/main/java/flex/messaging/io/amf/client/AMFConnection.java
index eae4ca3..134a431 100644
--- a/core/src/main/java/flex/messaging/io/amf/client/AMFConnection.java
+++ b/core/src/main/java/flex/messaging/io/amf/client/AMFConnection.java
@@ -565,6 +565,27 @@
      */
     public void connect(String connectUrl) throws ClientStatusException
     {
+        SerializationContext serializationContext = new SerializationContext();
+        serializationContext.createASObjectForMissingType = true;
+        // Make sure collections are written out as Arrays (vs. ArrayCollection),
+        // in case the server does not recognize ArrayCollections.
+        serializationContext.legacyCollection = true;
+        // When legacyMap is true, Java Maps are serialized as ECMA arrays
+        // instead of anonymous Object.
+        serializationContext.legacyMap = true;
+        connect(connectUrl, serializationContext);
+    }
+
+    /**
+     * Connects to the URL provided. Any previous connections are closed.
+     *
+     * @param connectUrl The url to connect to.
+     * @param serializationContext The serialization context used to configure the serialization.
+     *
+     * @throws ClientStatusException If there is a client side exception.
+     */
+    public void connect(String connectUrl, SerializationContext serializationContext) throws ClientStatusException
+    {
         if (connected)
             close();
 
@@ -586,15 +607,7 @@
         try
         {
             urlObject = new URL(encodedUrl != null? encodedUrl : url);
-
-            serializationContext = new SerializationContext();
-            serializationContext.createASObjectForMissingType = true;
-            // Make sure collections are written out as Arrays (vs. ArrayCollection),
-            // in case the server does not recognize ArrayCollections.
-            serializationContext.legacyCollection = true;
-            // When legacyMap is true, Java Maps are serialized as ECMA arrays
-            // instead of anonymous Object.
-            serializationContext.legacyMap = true;
+            this.serializationContext = serializationContext;
             internalConnect();
         }
         catch (IOException e)
diff --git a/pom.xml b/pom.xml
index 0ccc7e1..823f6d9 100755
--- a/pom.xml
+++ b/pom.xml
@@ -181,8 +181,7 @@
         </configuration>
       </plugin>
 
-      <!-- FIXME: Disabled the integrationtests for now -->
-      <!--plugin>
+      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-failsafe-plugin</artifactId>
         <executions>
@@ -193,7 +192,7 @@
             </goals>
           </execution>
         </executions>
-      </plugin-->
+      </plugin>
 
       <!-- Turned off till the JavaDoc tags are all correctly set -->
       <plugin>
diff --git a/remoting/pom.xml b/remoting/pom.xml
index 245fd8c..9d48643 100755
--- a/remoting/pom.xml
+++ b/remoting/pom.xml
@@ -37,6 +37,20 @@
     </dependency>
 
     <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-server</artifactId>
+      <version>9.1.0.v20131115</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.eclipse.jetty</groupId>
+      <artifactId>jetty-servlet</artifactId>
+      <version>9.1.0.v20131115</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <scope>test</scope>
diff --git a/core/src/test/java/amfclient/ClientCustomType.java b/remoting/src/test/java/amfclient/ClientCustomType.java
similarity index 100%
rename from core/src/test/java/amfclient/ClientCustomType.java
rename to remoting/src/test/java/amfclient/ClientCustomType.java
diff --git a/core/src/test/java/flex/messaging/io/amf/client/AMFConnectionIT.java b/remoting/src/test/java/flex/messaging/io/amf/client/AMFConnectionIT.java
similarity index 100%
rename from core/src/test/java/flex/messaging/io/amf/client/AMFConnectionIT.java
rename to remoting/src/test/java/flex/messaging/io/amf/client/AMFConnectionIT.java
diff --git a/core/src/test/java/flex/messaging/io/amf/client/AMFDataTypeIT.java b/remoting/src/test/java/flex/messaging/io/amf/client/AMFDataTypeIT.java
similarity index 86%
rename from core/src/test/java/flex/messaging/io/amf/client/AMFDataTypeIT.java
rename to remoting/src/test/java/flex/messaging/io/amf/client/AMFDataTypeIT.java
index e7706b0..0347a20 100644
--- a/core/src/test/java/flex/messaging/io/amf/client/AMFDataTypeIT.java
+++ b/remoting/src/test/java/flex/messaging/io/amf/client/AMFDataTypeIT.java
@@ -19,6 +19,7 @@
 import java.util.Date;
 import java.util.List;
 
+import flex.messaging.io.SerializationContext;
 import flex.messaging.util.TestServerWrapper;
 import junit.extensions.TestSetup;
 import org.w3c.dom.Document;
@@ -49,6 +50,7 @@
 
     private static TestServerWrapper serverWrapper;
     private static int serverPort;
+    private static SerializationContext serializationContext;
 
     /**
      * Given a remote method name, returns the AMF connection call needed using
@@ -88,7 +90,9 @@
         suite.addTest(new AMFDataTypeIT("testCallDoubleArgDoubleReturn"));
         suite.addTest(new AMFDataTypeIT("testCallIntArrayArgIntArrayReturn"));
         suite.addTest(new AMFDataTypeIT("testCallObjectArrayArgObjectArrayReturn"));
-        suite.addTest(new AMFDataTypeIT("testXMLDocument"));
+        suite.addTest(new AMFDataTypeIT("testXMLDocumentEnabledXml"));
+        suite.addTest(new AMFDataTypeIT("testXMLDocumentDisabledXml"));
+
 
         return new TestSetup(suite) {
             protected void setUp() throws Exception {
@@ -100,6 +104,17 @@
                 AMFConnection.registerAlias(
                         "remoting.amfclient.ServerCustomType" /* server type */,
                         "amfclient.ClientCustomType" /* client type */);
+
+                serializationContext = new SerializationContext();
+                serializationContext.createASObjectForMissingType = true;
+                // Make sure collections are written out as Arrays (vs. ArrayCollection),
+                // in case the server does not recognize ArrayCollections.
+                serializationContext.legacyCollection = true;
+                // When legacyMap is true, Java Maps are serialized as ECMA arrays
+                // instead of anonymous Object.
+                serializationContext.legacyMap = true;
+                // Disable serialization of xml documents.
+                serializationContext.allowXml = false;
             }
             protected void tearDown() throws Exception {
                 serverWrapper.stopServer();
@@ -421,11 +436,14 @@
         }
     }
 
-  
-    public void testXMLDocument()
+
+    public void testXMLDocumentEnabledXml()
     {
         try
         {
+            // Temporarily enable xml serialization/deserialization.
+            serializationContext.allowXml = true;
+
             String method = "echoObject1";
             final StringBuffer xml = new StringBuffer(512);
             xml.append("<test>    <item id=\"1\">        <sweet/>    </item></test>");
@@ -452,6 +470,43 @@
         {
             fail(UNEXPECTED_EXCEPTION_STRING + e);
         }
+        finally {
+            // Disable xml serialization/deserialization again.
+            serializationContext.allowXml = false;
+        }
+    }
+
+
+    public void testXMLDocumentDisabledXml()
+    {
+        try
+        {
+            String method = "echoObject1";
+            final StringBuffer xml = new StringBuffer(512);
+            xml.append("<test>    <item id=\"1\">        <sweet/>    </item></test>");
+
+            Document xmlDoc = XMLUtil.stringToDocument(xml.toString());
+            final Object methodArg = xmlDoc;
+            internalTestCall(getOperationCall(method), methodArg, new CallResultHandler(){
+                public void onResult(Object result)
+                {
+                    try
+                    {
+                        Document retXmlDoc = (Document)result;
+                        String retXML = XMLUtil.documentToString(retXmlDoc);
+                        Assert.assertEquals("", retXML);
+                    }
+                    catch (Exception e)
+                    {
+                        fail(UNEXPECTED_EXCEPTION_STRING + e);
+                    }
+                }
+            });
+        }
+        catch (Exception e)
+        {
+            fail(UNEXPECTED_EXCEPTION_STRING + e);
+        }
     }
 
     // A simple interface to handle AMF call results.
@@ -466,7 +521,7 @@
     {
         AMFConnection amfConnection = new AMFConnection();
         // Connect.
-        amfConnection.connect(getConnectionUrl());
+        amfConnection.connect(getConnectionUrl(), serializationContext);
         // Make a remoting call and retrieve the result.
         Object result;
         if (methodArg == null)
diff --git a/core/src/test/java/flex/messaging/util/TestServer.java b/remoting/src/test/java/flex/messaging/util/TestServer.java
similarity index 93%
rename from core/src/test/java/flex/messaging/util/TestServer.java
rename to remoting/src/test/java/flex/messaging/util/TestServer.java
index 197db97..df21561 100644
--- a/core/src/test/java/flex/messaging/util/TestServer.java
+++ b/remoting/src/test/java/flex/messaging/util/TestServer.java
@@ -45,7 +45,12 @@
         servlet.setInitParameter("services.configuration.file", configPath);
         context.addServlet(servlet, "/messagebroker/amf/*");
         server.setHandler(context);
-        server.start();
+        server.setDumpAfterStart(true);
+        try {
+            server.start();
+        } catch(Exception e) {
+            e.printStackTrace();
+        }
 
         int port = ((ServerConnector) server.getConnectors()[0]).getLocalPort();
         System.out.println("Port:" + port);
diff --git a/core/src/test/java/flex/messaging/util/TestServerWrapper.java b/remoting/src/test/java/flex/messaging/util/TestServerWrapper.java
similarity index 96%
rename from core/src/test/java/flex/messaging/util/TestServerWrapper.java
rename to remoting/src/test/java/flex/messaging/util/TestServerWrapper.java
index cbde0e4..b9fb954 100644
--- a/core/src/test/java/flex/messaging/util/TestServerWrapper.java
+++ b/remoting/src/test/java/flex/messaging/util/TestServerWrapper.java
@@ -39,7 +39,7 @@
         final String path = System.getProperty("java.home") + separator + "bin" + separator + "java";
         System.out.print("Starting test-server");
         final ProcessBuilder processBuilder = new ProcessBuilder(path,
-                /*"-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005",*/
+                "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005",
                 "-cp", /*"\"" +*/ classpath /*+ "\""*/,
                 TestServer.class.getCanonicalName(), /*"\"" +*/ configPath /*+ "\""*/);
         processBuilder.redirectErrorStream(true);
diff --git a/core/src/test/resources/WEB-INF/flex/remoting-config.xml b/remoting/src/test/resources/WEB-INF/flex/remoting-config.xml
similarity index 100%
rename from core/src/test/resources/WEB-INF/flex/remoting-config.xml
rename to remoting/src/test/resources/WEB-INF/flex/remoting-config.xml
diff --git a/core/src/test/resources/WEB-INF/flex/services-config.xml b/remoting/src/test/resources/WEB-INF/flex/services-config.xml
similarity index 91%
rename from core/src/test/resources/WEB-INF/flex/services-config.xml
rename to remoting/src/test/resources/WEB-INF/flex/services-config.xml
index 30277dd..2bbf7d7 100644
--- a/core/src/test/resources/WEB-INF/flex/services-config.xml
+++ b/remoting/src/test/resources/WEB-INF/flex/services-config.xml
@@ -26,6 +26,11 @@
     <channels>
         <channel-definition id="amf" class="mx.messaging.channels.AMFChannel">
             <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
+            <properties>
+                <serialization>
+                    <allow-xml>true</allow-xml>
+                </serialization>
+            </properties>
         </channel-definition>
     </channels>
 
