activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gaohow...@apache.org
Subject [1/2] activemq-artemis git commit: ARTEMIS-1661 Support splitting of broker.xml
Date Tue, 27 Feb 2018 12:13:34 GMT
Repository: activemq-artemis
Updated Branches:
  refs/heads/master 706abe890 -> aceacceb9


ARTEMIS-1661 Support splitting of broker.xml

Support XML standard XInclude thus allowing splitting of the broker.xml
Added test cases with split out config using include.

Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/9d1c59cd
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/9d1c59cd
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/9d1c59cd

Branch: refs/heads/master
Commit: 9d1c59cdff5c0084964611147a0433a165c8d989
Parents: 706abe8
Author: Michael André Pearce <michael.andre.pearce@me.com>
Authored: Mon Feb 26 09:31:21 2018 +0000
Committer: Michael André Pearce <michael.andre.pearce@me.com>
Committed: Tue Feb 27 11:24:36 2018 +0000

----------------------------------------------------------------------
 .../artemis/cli/commands/etc/broker.xml         |   1 +
 .../apache/activemq/artemis/utils/XMLUtil.java  |   1 +
 .../resources/schema/artemis-configuration.xsd  |  71 ++++-
 .../core/config/impl/FileConfigurationTest.java |   8 +-
 .../impl/FileXIncludeConfigurationTest.java     |  25 ++
 ...ionTest-xinclude-config-address-settings.xml |  66 +++++
 ...figurationTest-xinclude-config-addresses.xml |  50 ++++
 ...onTest-xinclude-config-security-settings.xml |  24 ++
 .../ConfigurationTest-xinclude-config.xml       | 294 +++++++++++++++++++
 .../test/resources/artemis-configuration.xsd    |  65 +++-
 docs/user-manual/en/configuration-index.md      |  37 +++
 11 files changed, 636 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/9d1c59cd/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/broker.xml
----------------------------------------------------------------------
diff --git a/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/broker.xml b/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/broker.xml
index 8e90625..772c7bd 100644
--- a/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/broker.xml
+++ b/artemis-cli/src/main/resources/org/apache/activemq/artemis/cli/commands/etc/broker.xml
@@ -20,6 +20,7 @@ under the License.
 
 <configuration xmlns="urn:activemq"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xmlns:xi="http://www.w3.org/2001/XInclude"
                xsi:schemaLocation="urn:activemq /schema/artemis-configuration.xsd">
 
    <core xmlns="urn:activemq:core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/9d1c59cd/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/XMLUtil.java
----------------------------------------------------------------------
diff --git a/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/XMLUtil.java b/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/XMLUtil.java
index 017832b..890130c 100644
--- a/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/XMLUtil.java
+++ b/artemis-core-client/src/main/java/org/apache/activemq/artemis/utils/XMLUtil.java
@@ -85,6 +85,7 @@ public final class XMLUtil {
       DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
       // see http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6529766
       factory.setNamespaceAware(true);
+      factory.setXIncludeAware(true);
       DocumentBuilder parser = factory.newDocumentBuilder();
       Document doc = parser.parse(new InputSource(sreader));
       return doc.getDocumentElement();

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/9d1c59cd/artemis-server/src/main/resources/schema/artemis-configuration.xsd
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/resources/schema/artemis-configuration.xsd b/artemis-server/src/main/resources/schema/artemis-configuration.xsd
index 802afca..d69af30 100644
--- a/artemis-server/src/main/resources/schema/artemis-configuration.xsd
+++ b/artemis-server/src/main/resources/schema/artemis-configuration.xsd
@@ -22,6 +22,8 @@
             elementFormDefault="qualified"
             version="1.0">
 
+   <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2005/08/xml.xsd"/>
+
    <xsd:element name="core" type="configurationType"/>
 
    <xsd:complexType name="configurationType">
@@ -397,6 +399,7 @@
                <xsd:sequence>
                   <xsd:element name="connector" type="transportType" maxOccurs="unbounded"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -410,6 +413,7 @@
                <xsd:sequence>
                   <xsd:element name="acceptor" type="transportType" maxOccurs="unbounded"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -423,6 +427,7 @@
                <xsd:sequence>
                   <xsd:element ref="broadcast-group" maxOccurs="unbounded" minOccurs="0"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -442,6 +447,7 @@
                      </xsd:annotation>
                   </xsd:element>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -455,6 +461,7 @@
                <xsd:sequence>
                   <xsd:element name="divert" type="divertType" maxOccurs="unbounded" minOccurs="0"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -504,9 +511,11 @@
                         <xsd:attribute name="purge-on-no-consumers" type="xsd:boolean" use="optional"/>
                         <xsd:attribute name="exclusive" type="xsd:boolean" use="optional"/>
                         <xsd:attribute name="last-value" type="xsd:boolean" use="optional"/>
+                        <xsd:attributeGroup ref="xml:specialAttrs"/>
                      </xsd:complexType>
                   </xsd:element>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -520,6 +529,7 @@
                <xsd:sequence>
                   <xsd:element name="bridge" type="bridgeType" maxOccurs="unbounded" minOccurs="0"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -850,6 +860,7 @@
                                           </xsd:documentation>
                                        </xsd:annotation>
                                     </xsd:attribute>
+                                    <xsd:attributeGroup ref="xml:specialAttrs"/>
                                  </xsd:complexType>
                               </xsd:element>
                            </xsd:sequence>
@@ -860,6 +871,7 @@
                                  </xsd:documentation>
                               </xsd:annotation>
                            </xsd:attribute>
+                           <xsd:attributeGroup ref="xml:specialAttrs"/>
                         </xsd:complexType>
                      </xsd:element>
                      <xsd:element name="security-setting-plugin" maxOccurs="1" minOccurs="0">
@@ -886,6 +898,7 @@
                                           </xsd:documentation>
                                        </xsd:annotation>
                                     </xsd:attribute>
+                                    <xsd:attributeGroup ref="xml:specialAttrs"/>
                                  </xsd:complexType>
                               </xsd:element>
                            </xsd:sequence>
@@ -896,6 +909,7 @@
                                  </xsd:documentation>
                               </xsd:annotation>
                            </xsd:attribute>
+                           <xsd:attributeGroup ref="xml:specialAttrs"/>
                         </xsd:complexType>
                      </xsd:element>
                   </xsd:choice>
@@ -915,9 +929,11 @@
                               </xsd:documentation>
                            </xsd:annotation>
                         </xsd:attribute>
+                        <xsd:attributeGroup ref="xml:specialAttrs"/>
                      </xsd:complexType>
                   </xsd:element>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -952,9 +968,11 @@
                               </xsd:documentation>
                            </xsd:annotation>
                         </xsd:attribute>
+                        <xsd:attributeGroup ref="xml:specialAttrs"/>
                      </xsd:complexType>
                   </xsd:element>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -968,6 +986,7 @@
                <xsd:sequence>
                   <xsd:element ref="address-setting" maxOccurs="unbounded" minOccurs="0"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -981,6 +1000,7 @@
                <xsd:sequence>
                   <xsd:element ref="resource-limit-setting" maxOccurs="unbounded" minOccurs="0"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -990,6 +1010,7 @@
                   <xsd:element name="connector-service" type="connector-serviceType" maxOccurs="unbounded"
                                minOccurs="0"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -1059,6 +1080,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:element name="local-bind-address" type="xsd:string">
@@ -1134,7 +1156,7 @@
                </xsd:documentation>
             </xsd:annotation>
          </xsd:attribute>
-
+         <xsd:attributeGroup ref="xml:specialAttrs"/>
       </xsd:complexType>
    </xsd:element>
 
@@ -1200,12 +1222,14 @@
                </xsd:documentation>
             </xsd:annotation>
          </xsd:attribute>
+         <xsd:attributeGroup ref="xml:specialAttrs"/>
       </xsd:complexType>
    </xsd:element>
 
    <xsd:element name="discovery-group-ref">
       <xsd:complexType>
          <xsd:attribute name="discovery-group-name" type="xsd:IDREF"/>
+         <xsd:attributeGroup ref="xml:specialAttrs"/>
       </xsd:complexType>
    </xsd:element>
 
@@ -1224,6 +1248,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:sequence>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="paramType">
@@ -1241,6 +1266,7 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <!-- BRIDGE CONFIGURATION -->
@@ -1419,6 +1445,7 @@
                   <xsd:sequence>
                      <xsd:element name="connector-ref" type="xsd:string" maxOccurs="unbounded" minOccurs="1"/>
                   </xsd:sequence>
+                  <xsd:attributeGroup ref="xml:specialAttrs"/>
                </xsd:complexType>
             </xsd:element>
             <xsd:element name="discovery-group-ref" maxOccurs="1" minOccurs="1">
@@ -1430,6 +1457,7 @@
                         </xsd:documentation>
                      </xsd:annotation>
                   </xsd:attribute>
+                  <xsd:attributeGroup ref="xml:specialAttrs"/>
                </xsd:complexType>
             </xsd:element>
          </xsd:choice>
@@ -1442,6 +1470,7 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <!-- TRANSFORMER CONFIGURATION -->
@@ -1462,6 +1491,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:sequence>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:element name="property">
@@ -1480,6 +1510,7 @@
                </xsd:documentation>
             </xsd:annotation>
          </xsd:attribute>
+         <xsd:attributeGroup ref="xml:specialAttrs"/>
       </xsd:complexType>
    </xsd:element>
 
@@ -1494,6 +1525,7 @@
             </xsd:element>
          </xsd:choice>
       </xsd:sequence>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="cluster-connectionUriType">
@@ -1511,6 +1543,7 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="cluster-connectionType">
@@ -1709,6 +1742,7 @@
                         </xsd:documentation>
                      </xsd:annotation>
                   </xsd:attribute>
+                  <xsd:attributeGroup ref="xml:specialAttrs"/>
                </xsd:complexType>
             </xsd:element>
             <xsd:element name="discovery-group-ref" maxOccurs="1" minOccurs="0">
@@ -1720,6 +1754,7 @@
                         </xsd:documentation>
                      </xsd:annotation>
                   </xsd:attribute>
+                  <xsd:attributeGroup ref="xml:specialAttrs"/>
                </xsd:complexType>
             </xsd:element>
          </xsd:choice>
@@ -1738,6 +1773,7 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
 
@@ -1756,6 +1792,7 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <!-- DIVERT CONFIGURATION TYPE -->
@@ -1827,7 +1864,7 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
-
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="storeType">
@@ -1847,9 +1884,11 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:choice>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="fileStoreType">
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="databaseStoreType">
@@ -1925,6 +1964,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="haPolicyType">
@@ -1951,6 +1991,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:choice>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="haReplicationType">
@@ -1977,6 +2018,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:choice>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
 
@@ -2028,6 +2070,7 @@
                <xsd:sequence>
                   <xsd:element name="connector-ref" type="xsd:string" maxOccurs="unbounded" minOccurs="1"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
          <xsd:element name="master" type="replicatedPolicyType" minOccurs="0" maxOccurs="1">
@@ -2045,6 +2088,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="haColocationSharedStoreType">
@@ -2099,6 +2143,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="haSharedStoreType">
@@ -2125,6 +2170,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:choice>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="haLiveOnlyPolicyType">
@@ -2137,6 +2183,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
    <xsd:complexType name="replicatedPolicyType">
       <xsd:all>
@@ -2207,6 +2254,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
    <xsd:complexType name="replicaPolicyType">
       <xsd:all>
@@ -2309,6 +2357,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
    <xsd:complexType name="colocatedReplicaPolicyType">
       <xsd:all>
@@ -2353,6 +2402,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
    <xsd:complexType name="sharedStoreMasterPolicyType">
       <xsd:all>
@@ -2378,6 +2428,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
    <xsd:complexType name="sharedStoreSlavePolicyType">
       <xsd:all>
@@ -2420,6 +2471,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
    <xsd:complexType name="colocatedPolicyType">
       <xsd:all>
@@ -2459,6 +2511,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
    <xsd:complexType name="scaleDownType">
       <xsd:sequence>
@@ -2489,6 +2542,7 @@
                         </xsd:documentation>
                      </xsd:annotation>
                   </xsd:attribute>
+                  <xsd:attributeGroup ref="xml:specialAttrs"/>
                </xsd:complexType>
             </xsd:element>
             <xsd:element name="connectors" minOccurs="0" maxOccurs="1">
@@ -2503,10 +2557,12 @@
                   <xsd:sequence>
                      <xsd:element name="connector-ref" type="xsd:string" maxOccurs="unbounded" minOccurs="1"/>
                   </xsd:sequence>
+                  <xsd:attributeGroup ref="xml:specialAttrs"/>
                </xsd:complexType>
             </xsd:element>
          </xsd:choice>
       </xsd:sequence>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="groupingHandlerType">
@@ -2563,6 +2619,7 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:element name="address-setting">
@@ -2916,6 +2973,7 @@
                </xsd:documentation>
             </xsd:annotation>
          </xsd:attribute>
+         <xsd:attributeGroup ref="xml:specialAttrs"/>
       </xsd:complexType>
    </xsd:element>
 
@@ -2951,6 +3009,7 @@
                </xsd:documentation>
             </xsd:annotation>
          </xsd:attribute>
+         <xsd:attributeGroup ref="xml:specialAttrs"/>
       </xsd:complexType>
    </xsd:element>
 
@@ -2968,6 +3027,7 @@
                </xsd:documentation>
             </xsd:annotation>
          </xsd:attribute>
+         <xsd:attributeGroup ref="xml:specialAttrs"/>
       </xsd:complexType>
    </xsd:element>
 
@@ -2989,6 +3049,7 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="transportType">
@@ -3029,6 +3090,7 @@
       <xsd:attribute name="purge-on-no-consumers" type="xsd:boolean" use="optional"/>
       <xsd:attribute name="exclusive" type="xsd:boolean" use="optional"/>
       <xsd:attribute name="last-value" type="xsd:boolean" use="optional"/>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="addressType">
@@ -3043,6 +3105,7 @@
                <xsd:sequence>
                   <xsd:element name="queue" type="queueType" maxOccurs="unbounded" minOccurs="0" />
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
          <xsd:element name="multicast" maxOccurs="1" minOccurs="0">
@@ -3055,6 +3118,7 @@
                <xsd:sequence>
                   <xsd:element name="queue" type="queueType" maxOccurs="unbounded" minOccurs="0" />
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
       </xsd:all>
@@ -3065,12 +3129,14 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="addressesType">
       <xsd:sequence>
          <xsd:element name="address" type="addressType" maxOccurs="unbounded" minOccurs="0"/>
       </xsd:sequence>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="wildcardType">
@@ -3116,6 +3182,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
 </xsd:schema>

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/9d1c59cd/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationTest.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationTest.java
index df6a4de..af48c62 100644
--- a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationTest.java
+++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileConfigurationTest.java
@@ -59,7 +59,9 @@ import org.junit.Test;
 
 public class FileConfigurationTest extends ConfigurationImplTest {
 
-   private final String fullConfigurationName = "ConfigurationTest-full-config.xml";
+   protected String getConfigurationName() {
+      return "ConfigurationTest-full-config.xml";
+   }
 
    @Override
    @Test
@@ -588,7 +590,7 @@ public class FileConfigurationTest extends ConfigurationImplTest {
       try {
 
          // copy working configuration to a location where the standard classloader cannot find it
-         final Path workingConfiguration = new File(getClass().getResource("/" + fullConfigurationName).toURI()).toPath();
+         final Path workingConfiguration = new File(getClass().getResource("/" + getConfigurationName()).toURI()).toPath();
          final Path targetFile = customConfiguration.toPath();
 
          Files.copy(workingConfiguration, targetFile, StandardCopyOption.REPLACE_EXISTING);
@@ -663,7 +665,7 @@ public class FileConfigurationTest extends ConfigurationImplTest {
    @Override
    protected Configuration createConfiguration() throws Exception {
       FileConfiguration fc = new FileConfiguration();
-      FileDeploymentManager deploymentManager = new FileDeploymentManager(fullConfigurationName);
+      FileDeploymentManager deploymentManager = new FileDeploymentManager(getConfigurationName());
       deploymentManager.addDeployable(fc);
       deploymentManager.readConfiguration();
       return fc;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/9d1c59cd/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileXIncludeConfigurationTest.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileXIncludeConfigurationTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileXIncludeConfigurationTest.java
new file mode 100644
index 0000000..dd7e88a
--- /dev/null
+++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/config/impl/FileXIncludeConfigurationTest.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.artemis.core.config.impl;
+
+public class FileXIncludeConfigurationTest extends FileConfigurationTest {
+
+   @Override
+   protected String getConfigurationName() {
+      return  "ConfigurationTest-xinclude-config.xml";
+   }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/9d1c59cd/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-address-settings.xml
----------------------------------------------------------------------
diff --git a/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-address-settings.xml b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-address-settings.xml
new file mode 100644
index 0000000..9e1ca40
--- /dev/null
+++ b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-address-settings.xml
@@ -0,0 +1,66 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<address-settings xmlns="urn:activemq:core">
+   <address-setting match="a1">
+      <dead-letter-address>a1.1</dead-letter-address>
+      <expiry-address>a1.2</expiry-address>
+      <redelivery-delay>1</redelivery-delay>
+      <max-size-bytes>817M</max-size-bytes>
+      <page-size-bytes>81738173872337</page-size-bytes>
+      <page-max-cache-size>10</page-max-cache-size>
+      <message-counter-history-day-limit>4</message-counter-history-day-limit>
+      <slow-consumer-threshold>10</slow-consumer-threshold>
+      <slow-consumer-check-period>5</slow-consumer-check-period>
+      <slow-consumer-policy>NOTIFY</slow-consumer-policy>
+      <auto-create-jms-queues>true</auto-create-jms-queues>
+      <auto-delete-jms-queues>true</auto-delete-jms-queues>
+      <auto-create-jms-topics>true</auto-create-jms-topics>
+      <auto-delete-jms-topics>true</auto-delete-jms-topics>
+      <auto-create-queues>true</auto-create-queues>
+      <auto-delete-queues>true</auto-delete-queues>
+      <auto-create-addresses>true</auto-create-addresses>
+      <auto-delete-addresses>true</auto-delete-addresses>
+      <default-purge-on-no-consumers>false</default-purge-on-no-consumers>
+      <default-max-consumers>5</default-max-consumers>
+      <default-queue-routing-type>ANYCAST</default-queue-routing-type>
+      <default-address-routing-type>MULTICAST</default-address-routing-type>
+   </address-setting>
+   <address-setting match="a2">
+      <dead-letter-address>a2.1</dead-letter-address>
+      <expiry-address>a2.2</expiry-address>
+      <redelivery-delay>5</redelivery-delay>
+      <max-size-bytes>932489234928324</max-size-bytes>
+      <page-size-bytes>7126716262626</page-size-bytes>
+      <page-max-cache-size>20</page-max-cache-size>
+      <message-counter-history-day-limit>8</message-counter-history-day-limit>
+      <slow-consumer-threshold>20</slow-consumer-threshold>
+      <slow-consumer-check-period>15</slow-consumer-check-period>
+      <slow-consumer-policy>KILL</slow-consumer-policy>
+      <auto-create-jms-queues>false</auto-create-jms-queues>
+      <auto-delete-jms-queues>false</auto-delete-jms-queues>
+      <auto-create-jms-topics>false</auto-create-jms-topics>
+      <auto-delete-jms-topics>false</auto-delete-jms-topics>
+      <auto-create-queues>false</auto-create-queues>
+      <auto-delete-queues>false</auto-delete-queues>
+      <auto-create-addresses>false</auto-create-addresses>
+      <auto-delete-addresses>false</auto-delete-addresses>
+      <default-purge-on-no-consumers>true</default-purge-on-no-consumers>
+      <default-max-consumers>15</default-max-consumers>
+      <default-queue-routing-type>MULTICAST</default-queue-routing-type>
+      <default-address-routing-type>ANYCAST</default-address-routing-type>
+   </address-setting>
+</address-settings>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/9d1c59cd/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-addresses.xml
----------------------------------------------------------------------
diff --git a/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-addresses.xml b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-addresses.xml
new file mode 100644
index 0000000..377b048
--- /dev/null
+++ b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-addresses.xml
@@ -0,0 +1,50 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<addresses xmlns="urn:activemq:core">
+   <address name="addr1">
+      <anycast>
+         <queue name="q1">
+            <durable>false</durable>
+            <filter string="color='blue'"/>
+         </queue>
+         <queue name="q2" max-consumers="-1" purge-on-no-consumers="false">
+            <durable>true</durable>
+            <filter string="color='green'"/>
+         </queue>
+      </anycast>
+   </address>
+   <address name="addr2">
+      <multicast>
+         <queue name="q3" max-consumers="10" >
+            <filter string="color='red'"/>
+         </queue>
+         <queue name="q4" purge-on-no-consumers="true">
+            <durable>true</durable>
+         </queue>
+      </multicast>
+   </address>
+   <address name="addr2">
+      <multicast>
+         <queue name="q5" max-consumers="1" />
+         <queue name="q6" max-consumers="1" />
+      </multicast>
+      <anycast>
+         <queue name="q7" max-consumers="-1" />
+         <queue name="q8" max-consumers="-1" />
+      </anycast>
+   </address>
+</addresses>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/9d1c59cd/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-security-settings.xml
----------------------------------------------------------------------
diff --git a/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-security-settings.xml b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-security-settings.xml
new file mode 100644
index 0000000..e22784c
--- /dev/null
+++ b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config-security-settings.xml
@@ -0,0 +1,24 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<security-settings xmlns="urn:activemq:core">
+   <security-setting match="a1">
+      <permission type="createNonDurableQueue" roles="a1.1"/>
+   </security-setting>
+   <security-setting match="a2">
+      <permission type="deleteNonDurableQueue" roles="a2.1"/>
+   </security-setting>
+</security-settings>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/9d1c59cd/artemis-server/src/test/resources/ConfigurationTest-xinclude-config.xml
----------------------------------------------------------------------
diff --git a/artemis-server/src/test/resources/ConfigurationTest-xinclude-config.xml b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config.xml
new file mode 100644
index 0000000..526d005
--- /dev/null
+++ b/artemis-server/src/test/resources/ConfigurationTest-xinclude-config.xml
@@ -0,0 +1,294 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<configuration
+        xmlns="urn:activemq"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xmlns:xi="http://www.w3.org/2001/XInclude"
+        xsi:schemaLocation="urn:activemq ../../../../activemq-server/src/main/resources/schema/artemis-server.xsd">
+   <core xmlns="urn:activemq:core">
+      <name>SomeNameForUseOnTheApplicationServer</name>
+      <resolve-protocols>false</resolve-protocols>
+      <persistence-enabled>false</persistence-enabled>
+      <scheduled-thread-pool-max-size>12345</scheduled-thread-pool-max-size>
+      <thread-pool-max-size>54321</thread-pool-max-size>
+      <security-enabled>false</security-enabled>
+      <graceful-shutdown-enabled>true</graceful-shutdown-enabled>
+      <graceful-shutdown-timeout>12345</graceful-shutdown-timeout>
+      <security-invalidation-interval>5423</security-invalidation-interval>
+      <journal-lock-acquisition-timeout>123</journal-lock-acquisition-timeout>
+      <wild-card-routing-enabled>true</wild-card-routing-enabled>
+      <management-address>Giraffe</management-address>
+      <management-notification-address>Whatever</management-notification-address>
+      <cluster-user>Frog</cluster-user>
+      <cluster-password>32a10275cf4ab4e9</cluster-password>
+      <password-codec>org.apache.activemq.artemis.utils.DefaultSensitiveStringCodec</password-codec>
+      <mask-password>true</mask-password>
+      <log-delegate-factory-class-name>com.foo</log-delegate-factory-class-name>
+      <jmx-management-enabled>false</jmx-management-enabled>
+      <jmx-domain>gro.qtenroh</jmx-domain>
+      <message-counter-enabled>true</message-counter-enabled>
+      <message-counter-sample-period>123456</message-counter-sample-period>
+      <message-counter-max-day-history>5</message-counter-max-day-history>
+      <connection-ttl-override>12345</connection-ttl-override>
+      <async-connection-execution-enabled>false</async-connection-execution-enabled>
+      <transaction-timeout>98765</transaction-timeout>
+      <transaction-timeout-scan-period>56789</transaction-timeout-scan-period>
+      <message-expiry-scan-period>10111213</message-expiry-scan-period>
+      <message-expiry-thread-priority>8</message-expiry-thread-priority>
+      <id-cache-size>127</id-cache-size>
+      <journal-datasync>false</journal-datasync>
+      <persist-id-cache>true</persist-id-cache>
+      <populate-validated-user>true</populate-validated-user>
+      <connection-ttl-check-interval>98765</connection-ttl-check-interval>
+      <configuration-file-refresh-period>1234567</configuration-file-refresh-period>
+      <global-max-size>1234567</global-max-size>
+      <max-disk-usage>37</max-disk-usage>
+      <disk-scan-period>123</disk-scan-period>
+      <critical-analyzer-policy>HALT</critical-analyzer-policy>
+      <critical-analyzer-check-period>333</critical-analyzer-check-period>
+      <critical-analyzer-timeout>777</critical-analyzer-timeout>
+      <critical-analyzer>false</critical-analyzer>
+      <remoting-incoming-interceptors>
+         <class-name>org.apache.activemq.artemis.tests.unit.core.config.impl.TestInterceptor1</class-name>
+         <class-name>org.apache.activemq.artemis.tests.unit.core.config.impl.TestInterceptor2</class-name>
+      </remoting-incoming-interceptors>
+      <remoting-outgoing-interceptors>
+         <class-name>org.apache.activemq.artemis.tests.unit.core.config.impl.TestInterceptor1</class-name>
+         <class-name>org.apache.activemq.artemis.tests.unit.core.config.impl.TestInterceptor2</class-name>
+      </remoting-outgoing-interceptors>
+      <persist-delivery-count-before-delivery>true</persist-delivery-count-before-delivery>
+      <connectors>
+         <connector name="connector1">tcp://localhost1:5678?localAddress=mylocal;localPort=99</connector>
+         <connector name="connector2">vm://5</connector>
+      </connectors>
+      <acceptors>
+         <acceptor>tcp://0.0.0.0:61616?tcpNoDelay=456;connectionTtl=44;connectionsAllowed=92</acceptor>
+         <acceptor>vm://0?e1=z1;e2=567;connectionsAllowed=87</acceptor>
+      </acceptors>
+      <broadcast-groups>
+         <broadcast-group name="bg1">
+            <local-bind-port>10999</local-bind-port>
+            <group-address>192.168.0.120</group-address>
+            <group-port>11999</group-port>
+            <broadcast-period>12345</broadcast-period>
+            <connector-ref>connector1</connector-ref>
+         </broadcast-group>
+         <broadcast-group name="bg2">
+            <local-bind-port>12999</local-bind-port>
+            <group-address>192.168.0.121</group-address>
+            <group-port>13999</group-port>
+            <broadcast-period>23456</broadcast-period>
+            <connector-ref>connector2</connector-ref>
+         </broadcast-group>
+      </broadcast-groups>
+      <discovery-groups>
+         <discovery-group name="dg1">
+            <local-bind-address>172.16.8.10</local-bind-address>
+            <group-address>192.168.0.120</group-address>
+            <group-port>11999</group-port>
+            <refresh-timeout>12345</refresh-timeout>
+         </discovery-group>
+         <discovery-group name="dg2">
+            <local-bind-address>172.16.8.11</local-bind-address>
+            <group-address>192.168.0.121</group-address>
+            <group-port>12999</group-port>
+            <refresh-timeout>23456</refresh-timeout>
+         </discovery-group>
+      </discovery-groups>
+      <diverts>
+         <divert name="divert1">
+            <routing-name>routing-name1</routing-name>
+            <address>address1</address>
+            <forwarding-address>forwarding-address1</forwarding-address>
+            <filter string="speed > 88"/>
+            <transformer-class-name>org.foo.Transformer</transformer-class-name>
+            <exclusive>true</exclusive>
+         </divert>
+         <divert name="divert2">
+            <routing-name>routing-name2</routing-name>
+            <address>address2</address>
+            <forwarding-address>forwarding-address2</forwarding-address>
+            <filter string="speed &lt; 88"/>
+            <transformer-class-name>org.foo.Transformer2</transformer-class-name>
+            <exclusive>false</exclusive>
+         </divert>
+         <divert name="divert3">
+            <routing-name>routing-name2</routing-name>
+            <address>address2</address>
+            <forwarding-address>forwarding-address2</forwarding-address>
+            <filter string="speed &lt; 88"/>
+            <transformer>
+               <class-name>org.foo.DivertTransformer3</class-name>
+               <property key="divertTransformerKey1" value="divertTransformerValue1"/>
+               <property key="divertTransformerKey2" value="divertTransformerValue2"/>
+            </transformer>
+            <exclusive>false</exclusive>
+         </divert>
+      </diverts>
+      <amqp-use-core-subscription-naming>true</amqp-use-core-subscription-naming>
+      <queues>
+         <queue name="queue1">
+            <address>address1</address>
+            <filter string="color='red'"/>
+            <durable>false</durable>
+         </queue>
+         <queue name="queue2">
+            <address>address2</address>
+            <filter string="color='blue'"/>
+            <durable>false</durable>
+         </queue>
+      </queues>
+      <bridges>
+         <bridge name="bridge1">
+            <queue-name>queue1</queue-name>
+            <forwarding-address>bridge-forwarding-address1</forwarding-address>
+            <filter string="sku > 1"/>
+            <transformer-class-name>org.foo.BridgeTransformer</transformer-class-name>
+            <min-large-message-size>4M</min-large-message-size>
+            <check-period>31</check-period>
+            <connection-ttl>370</connection-ttl>
+            <retry-interval>3</retry-interval>
+            <retry-interval-multiplier>0.2</retry-interval-multiplier>
+            <max-retry-interval>10002</max-retry-interval>
+            <reconnect-attempts>2</reconnect-attempts>
+            <failover-on-server-shutdown>false</failover-on-server-shutdown>
+            <use-duplicate-detection>true</use-duplicate-detection>
+            <confirmation-window-size>1G</confirmation-window-size>
+            <producer-window-size>444</producer-window-size>
+            <static-connectors>
+               <connector-ref>connector1</connector-ref>
+            </static-connectors>
+         </bridge>
+         <bridge name="bridge2">
+            <queue-name>queue2</queue-name>
+            <forwarding-address>bridge-forwarding-address2</forwarding-address>
+            <producer-window-size>555k</producer-window-size>
+            <discovery-group-ref discovery-group-name="dg1"/>
+         </bridge>
+         <bridge name="bridge3">
+            <queue-name>queue3</queue-name>
+            <forwarding-address>bridge-forwarding-address2</forwarding-address>
+            <transformer>
+               <class-name>org.foo.BridgeTransformer3</class-name>
+               <property key="bridgeTransformerKey1" value="bridgeTransformerValue1"/>
+               <property key="bridgeTransformerKey2" value="bridgeTransformerValue2"/>
+            </transformer>
+            <producer-window-size>555k</producer-window-size>
+            <discovery-group-ref discovery-group-name="dg1"/>
+         </bridge>
+      </bridges>
+      <ha-policy>
+         <!--only one of the following-->
+         <!--on server shutdown scale down to another live server-->
+         <live-only>
+            <scale-down>
+               <!--a grouping of servers that can be scaled down to-->
+               <group-name>boo!</group-name>
+               <!--either a discovery group-->
+               <discovery-group-ref discovery-group-name="dg1"/>
+            </scale-down>
+         </live-only>
+
+      </ha-policy>
+      <cluster-connections>
+         <cluster-connection name="cluster-connection1">
+            <address>queues1</address>
+            <connector-ref>connector1</connector-ref>
+            <check-period>331</check-period>
+            <connection-ttl>3370</connection-ttl>
+            <min-large-message-size>321</min-large-message-size>
+            <call-timeout>123</call-timeout>
+            <retry-interval>3</retry-interval>
+            <retry-interval-multiplier>0.25</retry-interval-multiplier>
+            <max-retry-interval>10000</max-retry-interval>
+            <reconnect-attempts>72</reconnect-attempts>
+            <use-duplicate-detection>true</use-duplicate-detection>
+            <message-load-balancing>ON_DEMAND</message-load-balancing>
+            <max-hops>1</max-hops>
+            <producer-window-size>222</producer-window-size>
+            <call-failover-timeout>123</call-failover-timeout>
+            <static-connectors>
+               <connector-ref>connector1</connector-ref>
+               <connector-ref>connector2</connector-ref>
+            </static-connectors>
+         </cluster-connection>
+         <cluster-connection name="cluster-connection2">
+            <address>queues2</address>
+            <connector-ref>connector2</connector-ref>
+            <call-timeout>456</call-timeout>
+            <retry-interval>4</retry-interval>
+            <use-duplicate-detection>false</use-duplicate-detection>
+            <message-load-balancing>STRICT</message-load-balancing>
+            <max-hops>2</max-hops>
+            <producer-window-size>333</producer-window-size>
+            <call-failover-timeout>456</call-failover-timeout>
+            <discovery-group-ref discovery-group-name="dg1"/>
+         </cluster-connection>
+      </cluster-connections>
+      <grouping-handler name="gh1">
+         <type>LOCAL</type>
+         <address>jms</address>
+      </grouping-handler>
+      <paging-directory>pagingdir</paging-directory>
+      <bindings-directory>somedir</bindings-directory>
+      <create-bindings-dir>false</create-bindings-dir>
+      <page-max-concurrent-io>17</page-max-concurrent-io>
+      <journal-directory>somedir2</journal-directory>
+      <create-journal-dir>false</create-journal-dir>
+      <journal-type>NIO</journal-type>
+      <journal-buffer-timeout>1000</journal-buffer-timeout>
+      <journal-buffer-size>10000</journal-buffer-size>
+      <journal-sync-transactional>false</journal-sync-transactional>
+      <journal-sync-non-transactional>true</journal-sync-non-transactional>
+      <log-journal-write-rate>true</log-journal-write-rate>
+      <journal-file-size>12345678</journal-file-size>
+      <journal-min-files>100</journal-min-files>
+      <journal-compact-percentage>33</journal-compact-percentage>
+      <journal-compact-min-files>123</journal-compact-min-files>
+      <journal-max-io>56546</journal-max-io>
+      <journal-file-open-timeout>9876</journal-file-open-timeout>
+      <server-dump-interval>5000</server-dump-interval>
+      <memory-warning-threshold>95</memory-warning-threshold>
+      <memory-measure-interval>54321</memory-measure-interval>
+      <large-messages-directory>largemessagesdir</large-messages-directory>
+      <network-check-list>127.0.0.1</network-check-list>
+      <network-check-NIC>some-nick</network-check-NIC>
+      <network-check-period>123</network-check-period>
+      <network-check-timeout>321</network-check-timeout>
+      <network-check-URL-list>www.apache.org</network-check-URL-list>
+      <network-check-ping-command>ping-four</network-check-ping-command>
+      <network-check-ping6-command>ping-six</network-check-ping6-command>
+
+      <xi:include href="./src/test/resources/ConfigurationTest-xinclude-config-security-settings.xml"/>
+
+      <xi:include href="./src/test/resources/ConfigurationTest-xinclude-config-address-settings.xml"/>
+
+      <resource-limit-settings>
+         <resource-limit-setting match="myUser">
+            <max-connections>104</max-connections>
+            <max-queues>13</max-queues>
+         </resource-limit-setting>
+      </resource-limit-settings>
+      <connector-services>
+         <connector-service>
+            <factory-class>org.foo</factory-class>
+         </connector-service>
+      </connector-services>
+
+      <xi:include href="./src/test/resources/ConfigurationTest-xinclude-config-addresses.xml"/>
+   </core>
+</configuration>

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/9d1c59cd/artemis-tools/src/test/resources/artemis-configuration.xsd
----------------------------------------------------------------------
diff --git a/artemis-tools/src/test/resources/artemis-configuration.xsd b/artemis-tools/src/test/resources/artemis-configuration.xsd
index cb579a8..84221de 100644
--- a/artemis-tools/src/test/resources/artemis-configuration.xsd
+++ b/artemis-tools/src/test/resources/artemis-configuration.xsd
@@ -379,6 +379,7 @@
                <xsd:sequence>
                   <xsd:element name="connector" type="transportType" maxOccurs="unbounded"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -392,6 +393,7 @@
                <xsd:sequence>
                   <xsd:element name="acceptor" type="transportType" maxOccurs="unbounded"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -405,6 +407,7 @@
                <xsd:sequence>
                   <xsd:element ref="broadcast-group" maxOccurs="unbounded" minOccurs="0"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -424,6 +427,7 @@
                      </xsd:annotation>
                   </xsd:element>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -437,6 +441,7 @@
                <xsd:sequence>
                   <xsd:element name="divert" type="divertType" maxOccurs="unbounded" minOccurs="0"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -486,9 +491,11 @@
                         <xsd:attribute name="purge-on-no-consumers" type="xsd:boolean" use="optional"/>
                         <xsd:attribute name="exclusive" type="xsd:boolean" use="optional"/>
                         <xsd:attribute name="last-value" type="xsd:boolean" use="optional"/>
+                        <xsd:attributeGroup ref="xml:specialAttrs"/>
                      </xsd:complexType>
                   </xsd:element>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -502,6 +509,7 @@
                <xsd:sequence>
                   <xsd:element name="bridge" type="bridgeType" maxOccurs="unbounded" minOccurs="0"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -782,6 +790,7 @@
                                        </xsd:documentation>
                                     </xsd:annotation>
                                  </xsd:attribute>
+                                 <xsd:attributeGroup ref="xml:specialAttrs"/>
                               </xsd:complexType>
                            </xsd:element>
                         </xsd:sequence>
@@ -792,6 +801,7 @@
                               </xsd:documentation>
                            </xsd:annotation>
                         </xsd:attribute>
+                        <xsd:attributeGroup ref="xml:specialAttrs"/>
                      </xsd:complexType>
                   </xsd:element>
                   <xsd:element name="security-setting-plugin" maxOccurs="1" minOccurs="0">
@@ -818,6 +828,7 @@
                                        </xsd:documentation>
                                     </xsd:annotation>
                                  </xsd:attribute>
+                                 <xsd:attributeGroup ref="xml:specialAttrs"/>
                               </xsd:complexType>
                            </xsd:element>
                         </xsd:sequence>
@@ -828,9 +839,11 @@
                               </xsd:documentation>
                            </xsd:annotation>
                         </xsd:attribute>
+                        <xsd:attributeGroup ref="xml:specialAttrs"/>
                      </xsd:complexType>
                   </xsd:element>
                </xsd:choice>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -844,6 +857,7 @@
                <xsd:sequence>
                   <xsd:element ref="address-setting" maxOccurs="unbounded" minOccurs="0"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -857,6 +871,7 @@
                <xsd:sequence>
                   <xsd:element ref="resource-limit-setting" maxOccurs="unbounded" minOccurs="0"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -866,6 +881,7 @@
                   <xsd:element name="connector-service" type="connector-serviceType" maxOccurs="unbounded"
                                minOccurs="0"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
 
@@ -879,6 +895,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:element name="local-bind-address" type="xsd:string">
@@ -955,6 +972,7 @@
             </xsd:annotation>
          </xsd:attribute>
 
+         <xsd:attributeGroup ref="xml:specialAttrs"/>
       </xsd:complexType>
    </xsd:element>
 
@@ -1020,12 +1038,14 @@
                </xsd:documentation>
             </xsd:annotation>
          </xsd:attribute>
+         <xsd:attributeGroup ref="xml:specialAttrs"/>
       </xsd:complexType>
    </xsd:element>
 
    <xsd:element name="discovery-group-ref">
       <xsd:complexType>
          <xsd:attribute name="discovery-group-name" type="xsd:IDREF"/>
+         <xsd:attributeGroup ref="xml:specialAttrs"/>
       </xsd:complexType>
    </xsd:element>
 
@@ -1044,6 +1064,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:sequence>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="paramType">
@@ -1061,6 +1082,7 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <!-- BRIDGE CONFIGURATION -->
@@ -1238,6 +1260,7 @@
                   <xsd:sequence>
                      <xsd:element name="connector-ref" type="xsd:string" maxOccurs="unbounded" minOccurs="1"/>
                   </xsd:sequence>
+                  <xsd:attributeGroup ref="xml:specialAttrs"/>
                </xsd:complexType>
             </xsd:element>
             <xsd:element name="discovery-group-ref" maxOccurs="1" minOccurs="1">
@@ -1249,6 +1272,7 @@
                         </xsd:documentation>
                      </xsd:annotation>
                   </xsd:attribute>
+                  <xsd:attributeGroup ref="xml:specialAttrs"/>
                </xsd:complexType>
             </xsd:element>
          </xsd:choice>
@@ -1261,6 +1285,7 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <!-- TRANSFORMER CONFIGURATION -->
@@ -1281,6 +1306,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:sequence>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:element name="property">
@@ -1299,6 +1325,7 @@
                </xsd:documentation>
             </xsd:annotation>
          </xsd:attribute>
+         <xsd:attributeGroup ref="xml:specialAttrs"/>
       </xsd:complexType>
    </xsd:element>
 
@@ -1313,6 +1340,7 @@
             </xsd:element>
          </xsd:choice>
       </xsd:sequence>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="cluster-connectionUriType">
@@ -1330,6 +1358,7 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="cluster-connectionType">
@@ -1526,6 +1555,7 @@
                         </xsd:documentation>
                      </xsd:annotation>
                   </xsd:attribute>
+                  <xsd:attributeGroup ref="xml:specialAttrs"/>
                </xsd:complexType>
             </xsd:element>
             <xsd:element name="discovery-group-ref" maxOccurs="1" minOccurs="0">
@@ -1537,6 +1567,7 @@
                         </xsd:documentation>
                      </xsd:annotation>
                   </xsd:attribute>
+                  <xsd:attributeGroup ref="xml:specialAttrs"/>
                </xsd:complexType>
             </xsd:element>
          </xsd:choice>
@@ -1555,6 +1586,7 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
 
@@ -1573,6 +1605,7 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <!-- DIVERT CONFIGURATION TYPE -->
@@ -1652,7 +1685,7 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
-
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="storeType">
@@ -1672,9 +1705,11 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:choice>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="fileStoreType">
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="databaseStoreType">
@@ -1722,6 +1757,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="haPolicyType">
@@ -1748,6 +1784,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:choice>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="haReplicationType">
@@ -1774,6 +1811,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:choice>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
 
@@ -1825,6 +1863,7 @@
                <xsd:sequence>
                   <xsd:element name="connector-ref" type="xsd:string" maxOccurs="unbounded" minOccurs="1"/>
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
          <xsd:element name="master" type="replicatedPolicyType" minOccurs="0" maxOccurs="1">
@@ -1842,6 +1881,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="haColocationSharedStoreType">
@@ -1896,6 +1936,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="haSharedStoreType">
@@ -1922,6 +1963,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:choice>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="haLiveOnlyPolicyType">
@@ -1934,6 +1976,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
    <xsd:complexType name="replicatedPolicyType">
       <xsd:all>
@@ -1974,6 +2017,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
    <xsd:complexType name="replicaPolicyType">
       <xsd:all>
@@ -2046,6 +2090,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
    <xsd:complexType name="colocatedReplicaPolicyType">
       <xsd:all>
@@ -2090,6 +2135,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
    <xsd:complexType name="sharedStoreMasterPolicyType">
       <xsd:all>
@@ -2108,6 +2154,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
    <xsd:complexType name="sharedStoreSlavePolicyType">
       <xsd:all>
@@ -2150,6 +2197,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
    <xsd:complexType name="colocatedPolicyType">
       <xsd:all>
@@ -2189,6 +2237,7 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
    <xsd:complexType name="scaleDownType">
       <xsd:sequence>
@@ -2219,6 +2268,7 @@
                         </xsd:documentation>
                      </xsd:annotation>
                   </xsd:attribute>
+                  <xsd:attributeGroup ref="xml:specialAttrs"/>
                </xsd:complexType>
             </xsd:element>
             <xsd:element name="connectors" minOccurs="0" maxOccurs="1">
@@ -2233,10 +2283,12 @@
                   <xsd:sequence>
                      <xsd:element name="connector-ref" type="xsd:string" maxOccurs="unbounded" minOccurs="1"/>
                   </xsd:sequence>
+                  <xsd:attributeGroup ref="xml:specialAttrs"/>
                </xsd:complexType>
             </xsd:element>
          </xsd:choice>
       </xsd:sequence>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="groupingHandlerType">
@@ -2293,6 +2345,7 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:element name="address-setting">
@@ -2613,6 +2666,7 @@
                </xsd:documentation>
             </xsd:annotation>
          </xsd:attribute>
+         <xsd:attributeGroup ref="xml:specialAttrs"/>
       </xsd:complexType>
    </xsd:element>
 
@@ -2648,6 +2702,7 @@
                </xsd:documentation>
             </xsd:annotation>
          </xsd:attribute>
+         <xsd:attributeGroup ref="xml:specialAttrs"/>
       </xsd:complexType>
    </xsd:element>
 
@@ -2665,6 +2720,7 @@
                </xsd:documentation>
             </xsd:annotation>
          </xsd:attribute>
+         <xsd:attributeGroup ref="xml:specialAttrs"/>
       </xsd:complexType>
    </xsd:element>
 
@@ -2686,6 +2742,7 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="transportType">
@@ -2712,6 +2769,7 @@
       <xsd:attribute name="purge-on-no-consumers" type="xsd:boolean" use="optional"/>
       <xsd:attribute name="exclusive" type="xsd:boolean" use="optional"/>
       <xsd:attribute name="last-value" type="xsd:boolean" use="optional"/>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="addressType">
@@ -2726,6 +2784,7 @@
                <xsd:sequence>
                   <xsd:element name="queue" type="queueType" maxOccurs="unbounded" minOccurs="0" />
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
          <xsd:element name="multicast" maxOccurs="1" minOccurs="0">
@@ -2738,6 +2797,7 @@
                <xsd:sequence>
                   <xsd:element name="queue" type="queueType" maxOccurs="unbounded" minOccurs="0" />
                </xsd:sequence>
+               <xsd:attributeGroup ref="xml:specialAttrs"/>
             </xsd:complexType>
          </xsd:element>
       </xsd:all>
@@ -2748,12 +2808,14 @@
             </xsd:documentation>
          </xsd:annotation>
       </xsd:attribute>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="addressesType">
       <xsd:sequence>
          <xsd:element name="address" type="addressType" maxOccurs="unbounded" minOccurs="0"/>
       </xsd:sequence>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 
    <xsd:complexType name="wildcardType">
@@ -2799,5 +2861,6 @@
             </xsd:annotation>
          </xsd:element>
       </xsd:all>
+      <xsd:attributeGroup ref="xml:specialAttrs"/>
    </xsd:complexType>
 </xsd:schema>

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/9d1c59cd/docs/user-manual/en/configuration-index.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/configuration-index.md b/docs/user-manual/en/configuration-index.md
index 13112de..4b45de9 100644
--- a/docs/user-manual/en/configuration-index.md
+++ b/docs/user-manual/en/configuration-index.md
@@ -32,6 +32,43 @@ You can also change the prefix through the broker.xml by setting:
 
 This is to help you customize artemis on embedded systems.
 
+# Modularising config into separate files.
+
+XML XInclude support is provided in the configuration as such if you wish to break your configuration out into separate files you can.
+
+To do this ensure the following is defined at the root configuration element.
+
+```
+   xmlns:xi="http://www.w3.org/2001/XInclude"
+```
+
+You can now define include tag's where you want to bring in xml configuration from another file:
+
+```
+   <xi:include href="my-address-settings.xml"/>
+```
+
+You should ensure xml elements in separated files should be namespaced correctly for example if address-settings element was separated, it should have the element namespace defined:
+
+```
+ <address-settings xmlns="urn:activemq:core">
+```
+
+An example can of this feature can be seen in the test suites:
+``` 
+   ./artemis-server/src/test/resources/ConfigurationTest-xinclude-config.xml
+```
+N.B. if you use xmllint to validate xml's against schema you should enable xinclude flag when running.
+
+```
+   --xinclude
+```
+
+For further information on XInclude see:
+
+[https://www.w3.org/TR/xinclude/](https://www.w3.org/TR/xinclude/) 
+
+
 # The core configuration
 
 This describes the root of the XML configuration. You will see here also multiple sub-types listed.


Mime
View raw message