You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2016/06/06 20:01:25 UTC

[2/3] activemq-artemis git commit: ARTEMIS-322 auto-create/delete JMS topic

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/AddressSettings.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/AddressSettings.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/AddressSettings.java
index 4b53ec6..642574b 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/AddressSettings.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/AddressSettings.java
@@ -56,6 +56,10 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
 
    public static final boolean DEFAULT_AUTO_DELETE_QUEUES = true;
 
+   public static final boolean DEFAULT_AUTO_CREATE_TOPICS = true;
+
+   public static final boolean DEFAULT_AUTO_DELETE_TOPICS = true;
+
    public static final long DEFAULT_REDISTRIBUTION_DELAY = -1;
 
    public static final long DEFAULT_EXPIRY_DELAY = -1;
@@ -114,6 +118,10 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
 
    private Boolean autoDeleteJmsQueues = null;
 
+   private Boolean autoCreateJmsTopics = null;
+
+   private Boolean autoDeleteJmsTopics = null;
+
    private Integer managementBrowsePageSize = AddressSettings.MANAGEMENT_BROWSE_PAGE_SIZE;
 
    //from amq5
@@ -142,6 +150,8 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
       this.slowConsumerPolicy = other.slowConsumerPolicy;
       this.autoCreateJmsQueues = other.autoCreateJmsQueues;
       this.autoDeleteJmsQueues = other.autoDeleteJmsQueues;
+      this.autoCreateJmsTopics = other.autoCreateJmsTopics;
+      this.autoDeleteJmsTopics = other.autoDeleteJmsTopics;
       this.managementBrowsePageSize = other.managementBrowsePageSize;
       this.queuePrefetch = other.queuePrefetch;
    }
@@ -167,6 +177,24 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
       return this;
    }
 
+   public boolean isAutoCreateJmsTopics() {
+      return autoCreateJmsTopics != null ? autoCreateJmsTopics : AddressSettings.DEFAULT_AUTO_CREATE_TOPICS;
+   }
+
+   public AddressSettings setAutoCreateJmsTopics(final boolean autoCreateJmsTopics) {
+      this.autoCreateJmsTopics = autoCreateJmsTopics;
+      return this;
+   }
+
+   public boolean isAutoDeleteJmsTopics() {
+      return autoDeleteJmsTopics != null ? autoDeleteJmsTopics : AddressSettings.DEFAULT_AUTO_DELETE_QUEUES;
+   }
+
+   public AddressSettings setAutoDeleteJmsTopics(final boolean autoDeleteJmsTopics) {
+      this.autoDeleteJmsTopics = autoDeleteJmsTopics;
+      return this;
+   }
+
    public boolean isLastValueQueue() {
       return lastValueQueue != null ? lastValueQueue : AddressSettings.DEFAULT_LAST_VALUE_QUEUE;
    }
@@ -416,6 +444,12 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
       if (autoDeleteJmsQueues == null) {
          autoDeleteJmsQueues = merged.autoDeleteJmsQueues;
       }
+      if (autoCreateJmsTopics == null) {
+         autoCreateJmsTopics = merged.autoCreateJmsTopics;
+      }
+      if (autoDeleteJmsTopics == null) {
+         autoDeleteJmsTopics = merged.autoDeleteJmsTopics;
+      }
       if (managementBrowsePageSize == null) {
          managementBrowsePageSize = merged.managementBrowsePageSize;
       }
@@ -482,6 +516,10 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
 
       autoDeleteJmsQueues = BufferHelper.readNullableBoolean(buffer);
 
+      autoCreateJmsTopics = BufferHelper.readNullableBoolean(buffer);
+
+      autoDeleteJmsTopics = BufferHelper.readNullableBoolean(buffer);
+
       managementBrowsePageSize = BufferHelper.readNullableInteger(buffer);
    }
 
@@ -509,6 +547,8 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
          BufferHelper.sizeOfNullableSimpleString(slowConsumerPolicy != null ? slowConsumerPolicy.toString() : null) +
          BufferHelper.sizeOfNullableBoolean(autoCreateJmsQueues) +
          BufferHelper.sizeOfNullableBoolean(autoDeleteJmsQueues) +
+         BufferHelper.sizeOfNullableBoolean(autoCreateJmsTopics) +
+         BufferHelper.sizeOfNullableBoolean(autoDeleteJmsTopics) +
          BufferHelper.sizeOfNullableInteger(managementBrowsePageSize);
    }
 
@@ -556,6 +596,10 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
 
       BufferHelper.writeNullableBoolean(buffer, autoDeleteJmsQueues);
 
+      BufferHelper.writeNullableBoolean(buffer, autoCreateJmsTopics);
+
+      BufferHelper.writeNullableBoolean(buffer, autoDeleteJmsTopics);
+
       BufferHelper.writeNullableInteger(buffer, managementBrowsePageSize);
    }
 
@@ -587,6 +631,8 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
       result = prime * result + ((slowConsumerPolicy == null) ? 0 : slowConsumerPolicy.hashCode());
       result = prime * result + ((autoCreateJmsQueues == null) ? 0 : autoCreateJmsQueues.hashCode());
       result = prime * result + ((autoDeleteJmsQueues == null) ? 0 : autoDeleteJmsQueues.hashCode());
+      result = prime * result + ((autoCreateJmsTopics == null) ? 0 : autoCreateJmsTopics.hashCode());
+      result = prime * result + ((autoDeleteJmsTopics == null) ? 0 : autoDeleteJmsTopics.hashCode());
       result = prime * result + ((managementBrowsePageSize == null) ? 0 : managementBrowsePageSize.hashCode());
       result = prime * result + ((queuePrefetch == null) ? 0 : queuePrefetch.hashCode());
       return result;
@@ -730,8 +776,20 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
       }
       else if (!autoDeleteJmsQueues.equals(other.autoDeleteJmsQueues))
          return false;
-      else if (!managementBrowsePageSize.equals(other.managementBrowsePageSize))
+
+      if (autoCreateJmsTopics == null) {
+         if (other.autoCreateJmsTopics != null)
+            return false;
+      }
+      else if (!autoCreateJmsTopics.equals(other.autoCreateJmsTopics))
          return false;
+      if (autoDeleteJmsTopics == null) {
+         if (other.autoDeleteJmsTopics != null)
+            return false;
+      }
+      else if (!autoDeleteJmsTopics.equals(other.autoDeleteJmsTopics))
+         return false;
+
       if (managementBrowsePageSize == null) {
          if (other.managementBrowsePageSize != null)
             return false;
@@ -793,6 +851,10 @@ public class AddressSettings implements Mergeable<AddressSettings>, Serializable
          autoCreateJmsQueues +
          ", autoDeleteJmsQueues=" +
          autoDeleteJmsQueues +
+         ", autoCreateJmsTopics=" +
+         autoCreateJmsTopics +
+         ", autoDeleteJmsTopics=" +
+         autoDeleteJmsTopics +
          ", managementBrowsePageSize=" +
          managementBrowsePageSize +
          "]";

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/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 38961f0..93d2a9e 100644
--- a/artemis-server/src/main/resources/schema/artemis-configuration.xsd
+++ b/artemis-server/src/main/resources/schema/artemis-configuration.xsd
@@ -2308,6 +2308,23 @@
                </xsd:annotation>
             </xsd:element>
 
+            <xsd:element name="auto-create-jms-topics" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
+               <xsd:annotation>
+                  <xsd:documentation>
+                     whether or not to automatically create JMS topics when a producer sends or a consumer subscribes to
+                     a topic
+                  </xsd:documentation>
+               </xsd:annotation>
+            </xsd:element>
+
+            <xsd:element name="auto-delete-jms-topics" type="xsd:boolean" default="true" maxOccurs="1" minOccurs="0">
+               <xsd:annotation>
+                  <xsd:documentation>
+                     whether or not to delete auto-created JMS topics when the last subscription is closed
+                  </xsd:documentation>
+               </xsd:annotation>
+            </xsd:element>
+
             <xsd:element name="management-browse-page-size" type="xsd:int" default="200" maxOccurs="1"
                          minOccurs="0">
                <xsd:annotation>

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/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 c4831bc..63962fb 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
@@ -288,6 +288,8 @@ public class FileConfigurationTest extends ConfigurationImplTest {
       assertEquals(SlowConsumerPolicy.NOTIFY, conf.getAddressesSettings().get("a1").getSlowConsumerPolicy());
       assertEquals(true, conf.getAddressesSettings().get("a1").isAutoCreateJmsQueues());
       assertEquals(true, conf.getAddressesSettings().get("a1").isAutoDeleteJmsQueues());
+      assertEquals(true, conf.getAddressesSettings().get("a1").isAutoCreateJmsTopics());
+      assertEquals(true, conf.getAddressesSettings().get("a1").isAutoDeleteJmsTopics());
 
       assertEquals("a2.1", conf.getAddressesSettings().get("a2").getDeadLetterAddress().toString());
       assertEquals("a2.2", conf.getAddressesSettings().get("a2").getExpiryAddress().toString());
@@ -301,6 +303,8 @@ public class FileConfigurationTest extends ConfigurationImplTest {
       assertEquals(SlowConsumerPolicy.KILL, conf.getAddressesSettings().get("a2").getSlowConsumerPolicy());
       assertEquals(false, conf.getAddressesSettings().get("a2").isAutoCreateJmsQueues());
       assertEquals(false, conf.getAddressesSettings().get("a2").isAutoDeleteJmsQueues());
+      assertEquals(false, conf.getAddressesSettings().get("a2").isAutoCreateJmsTopics());
+      assertEquals(false, conf.getAddressesSettings().get("a2").isAutoDeleteJmsTopics());
 
       assertTrue(conf.getResourceLimitSettings().containsKey("myUser"));
       assertEquals(104, conf.getResourceLimitSettings().get("myUser").getMaxConnections());

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/artemis-server/src/test/java/org/apache/activemq/artemis/core/settings/AddressSettingsTest.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/settings/AddressSettingsTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/settings/AddressSettingsTest.java
index 4b84e75..58f7c99 100644
--- a/artemis-server/src/test/java/org/apache/activemq/artemis/core/settings/AddressSettingsTest.java
+++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/settings/AddressSettingsTest.java
@@ -41,6 +41,8 @@ public class AddressSettingsTest extends ActiveMQTestBase {
       Assert.assertEquals(AddressSettings.DEFAULT_SLOW_CONSUMER_POLICY, addressSettings.getSlowConsumerPolicy());
       Assert.assertEquals(AddressSettings.DEFAULT_AUTO_CREATE_QUEUES, addressSettings.isAutoCreateJmsQueues());
       Assert.assertEquals(AddressSettings.DEFAULT_AUTO_DELETE_QUEUES, addressSettings.isAutoDeleteJmsQueues());
+      Assert.assertEquals(AddressSettings.DEFAULT_AUTO_CREATE_TOPICS, addressSettings.isAutoCreateJmsTopics());
+      Assert.assertEquals(AddressSettings.DEFAULT_AUTO_DELETE_TOPICS, addressSettings.isAutoDeleteJmsTopics());
    }
 
    @Test

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/artemis-server/src/test/resources/ConfigurationTest-full-config.xml
----------------------------------------------------------------------
diff --git a/artemis-server/src/test/resources/ConfigurationTest-full-config.xml b/artemis-server/src/test/resources/ConfigurationTest-full-config.xml
index 0514788..ec6d6e9 100644
--- a/artemis-server/src/test/resources/ConfigurationTest-full-config.xml
+++ b/artemis-server/src/test/resources/ConfigurationTest-full-config.xml
@@ -248,6 +248,8 @@
             <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>
          </address-setting>
          <address-setting match="a2">
             <dead-letter-address>a2.1</dead-letter-address>
@@ -262,6 +264,8 @@
             <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>
          </address-setting>
       </address-settings>
       <resource-limit-settings>

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/docs/user-manual/en/queue-attributes.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/queue-attributes.md b/docs/user-manual/en/queue-attributes.md
index 9fa326b..22184aa 100644
--- a/docs/user-manual/en/queue-attributes.md
+++ b/docs/user-manual/en/queue-attributes.md
@@ -90,6 +90,8 @@ entry that would be found in the `broker.xml` file.
           <slow-consumer-check-period>5</slow-consumer-check-period>
           <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>
        </address-setting>
     </address-settings>
 
@@ -177,7 +179,18 @@ create a JMS queue when a JMS message is sent to a queue whose name fits
 the address `match` (remember, a JMS queue is just a core queue which has
 the same address and queue name) or a JMS consumer tries to connect to a
 queue whose name fits the address `match`. Queues which are auto-created
-are durable, non-temporary, and non-transient.
+are durable, non-temporary, and non-transient. Default is `true`.
 
-`auto-delete-jms-queues`. Whether or not to the broker should automatically
+`auto-delete-jms-queues`. Whether or not the broker should automatically
 delete auto-created JMS queues when they have both 0 consumers and 0 messages.
+Default is `true`.
+
+`auto-create-jms-topics`. Whether or not the broker should automatically
+create a JMS topic when a JMS message is sent to a topic whose name fits
+the address `match` (remember, a JMS topic is just a core address which has 
+one or more core queues mapped to it) or a JMS consumer tries to subscribe
+to a topic whose name fits the address `match`. Default is `true`.
+
+`auto-delete-jms-topics`. Whether or not the broker should automatically
+delete auto-created JMS topics once the last subscription on the topic has
+been closed. Default is `true`.

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index d0327fa..d8587e1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,7 +89,7 @@
       <activemq.version.majorVersion>1</activemq.version.majorVersion>
       <activemq.version.minorVersion>0</activemq.version.minorVersion>
       <activemq.version.microVersion>0</activemq.version.microVersion>
-      <activemq.version.incrementingVersion>126,125,124,123,122</activemq.version.incrementingVersion>
+      <activemq.version.incrementingVersion>127,126,125,124,123,122</activemq.version.incrementingVersion>
       <activemq.version.versionTag>${project.version}</activemq.version.versionTag>
       <ActiveMQ-Version>
          ${project.version}(${activemq.version.incrementingVersion})
@@ -236,7 +236,7 @@
             <scope>provided</scope>
             <!-- postgresql license -->
          </dependency>
-         
+
          <dependency>
             <groupId>commons-collections</groupId>
             <artifactId>commons-collections-testframework</artifactId>

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsDestinationTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsDestinationTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsDestinationTest.java
new file mode 100644
index 0000000..fcc05a3
--- /dev/null
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsDestinationTest.java
@@ -0,0 +1,258 @@
+/*
+ * 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.tests.integration.client;
+
+import javax.jms.Connection;
+import javax.jms.JMSSecurityException;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.UUID;
+
+import org.apache.activemq.artemis.api.core.SimpleString;
+import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
+import org.apache.activemq.artemis.core.security.Role;
+import org.apache.activemq.artemis.core.server.Queue;
+import org.apache.activemq.artemis.jms.client.ActiveMQTemporaryTopic;
+import org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager;
+import org.apache.activemq.artemis.tests.integration.IntegrationTestLogger;
+import org.apache.activemq.artemis.tests.util.JMSTestBase;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class AutoCreateJmsDestinationTest extends JMSTestBase {
+
+   @Test
+   public void testAutoCreateOnSendToQueue() throws Exception {
+      Connection connection = cf.createConnection();
+      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+      javax.jms.Queue queue = ActiveMQJMSClient.createQueue("test");
+
+      MessageProducer producer = session.createProducer(queue);
+
+      final int numMessages = 100;
+
+      for (int i = 0; i < numMessages; i++) {
+         TextMessage mess = session.createTextMessage("msg" + i);
+         producer.send(mess);
+      }
+
+      producer.close();
+
+      MessageConsumer messageConsumer = session.createConsumer(queue);
+      connection.start();
+
+      for (int i = 0; i < numMessages; i++) {
+         Message m = messageConsumer.receive(5000);
+         Assert.assertNotNull(m);
+      }
+
+      // make sure the JMX control was created for the JMS queue
+      assertNotNull(server.getManagementService().getResource("jms.queue.test"));
+
+      connection.close();
+   }
+
+   @Test
+   public void testAutoCreateOnSendToQueueAnonymousProducer() throws Exception {
+      Connection connection = cf.createConnection();
+      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+      javax.jms.Queue queue = ActiveMQJMSClient.createQueue("test");
+
+      MessageProducer producer = session.createProducer(null);
+
+      final int numMessages = 100;
+
+      for (int i = 0; i < numMessages; i++) {
+         TextMessage mess = session.createTextMessage("msg" + i);
+         producer.send(queue, mess);
+      }
+
+      producer.close();
+
+      MessageConsumer messageConsumer = session.createConsumer(queue);
+      connection.start();
+
+      for (int i = 0; i < numMessages; i++) {
+         Message m = messageConsumer.receive(5000);
+         Assert.assertNotNull(m);
+      }
+
+      connection.close();
+   }
+
+   @Test
+   public void testAutoCreateOnSendToQueueSecurity() throws Exception {
+      ((ActiveMQJAASSecurityManager) server.getSecurityManager()).getConfiguration().addUser("guest", "guest");
+      ((ActiveMQJAASSecurityManager) server.getSecurityManager()).getConfiguration().setDefaultUser("guest");
+      ((ActiveMQJAASSecurityManager) server.getSecurityManager()).getConfiguration().addRole("guest", "rejectAll");
+      Role role = new Role("rejectAll", false, false, false, false, false, false, false);
+      Set<Role> roles = new HashSet<>();
+      roles.add(role);
+      server.getSecurityRepository().addMatch("#", roles);
+      Connection connection = cf.createConnection();
+      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+      javax.jms.Queue queue = ActiveMQJMSClient.createQueue("test");
+      MessageProducer producer = session.createProducer(queue);
+      TextMessage mess = session.createTextMessage("msg");
+
+      try {
+         producer.send(mess);
+         Assert.fail("Sending a message here should throw a JMSSecurityException");
+      }
+      catch (Exception e) {
+         Assert.assertTrue(e instanceof JMSSecurityException);
+      }
+
+      connection.close();
+   }
+
+   @Test
+   public void testAutoCreateOnSendToTopic() throws Exception {
+      Connection connection = cf.createConnection();
+      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+      javax.jms.Topic topic = ActiveMQJMSClient.createTopic("test");
+
+      MessageProducer producer = session.createProducer(topic);
+      producer.send(session.createTextMessage("msg"));
+
+      connection.close();
+
+      assertNotNull(server.getManagementService().getResource("jms.topic.test"));
+   }
+
+   @Test
+   public void testAutoCreateOnConsumeFromQueue() throws Exception {
+      Connection connection = null;
+      connection = cf.createConnection();
+      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+      javax.jms.Queue queue = ActiveMQJMSClient.createQueue("test");
+
+      MessageConsumer messageConsumer = session.createConsumer(queue);
+      connection.start();
+
+      Message m = messageConsumer.receive(500);
+      Assert.assertNull(m);
+
+      Queue q = (Queue) server.getPostOffice().getBinding(new SimpleString("jms.queue.test")).getBindable();
+      Assert.assertEquals(0, q.getMessageCount());
+      Assert.assertEquals(0, q.getMessagesAdded());
+      connection.close();
+   }
+
+   @Test
+   public void testAutoCreateOnSubscribeToTopic() throws Exception {
+      Connection connection = cf.createConnection();
+      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+      final String topicName = "test-" + UUID.randomUUID().toString();
+
+      javax.jms.Topic topic = ActiveMQJMSClient.createTopic(topicName);
+
+      MessageConsumer consumer = session.createConsumer(topic);
+      MessageProducer producer = session.createProducer(topic);
+      producer.send(session.createTextMessage("msg"));
+      connection.start();
+      assertNotNull(consumer.receive(500));
+
+      assertNotNull(server.getManagementService().getResource("jms.topic." + topicName));
+
+      connection.close();
+
+      assertNull(server.getManagementService().getResource("jms.topic." + topicName));
+   }
+
+   @Test
+   public void testAutoCreateOnDurableSubscribeToTopic() throws Exception {
+      Connection connection = cf.createConnection();
+      connection.setClientID("myClientID");
+      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+      javax.jms.Topic topic = ActiveMQJMSClient.createTopic("test");
+
+      MessageConsumer consumer = session.createDurableConsumer(topic, "myDurableSub");
+      MessageProducer producer = session.createProducer(topic);
+      producer.send(session.createTextMessage("msg"));
+      connection.start();
+      assertNotNull(consumer.receive(500));
+
+      connection.close();
+
+      assertNotNull(server.getManagementService().getResource("jms.topic.test"));
+
+      assertNotNull(server.locateQueue(SimpleString.toSimpleString("myClientID.myDurableSub")));
+   }
+
+   @Test
+   public void testTemporaryTopic() throws Exception {
+      Connection connection = cf.createConnection();
+      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+//      javax.jms.Topic topic = ActiveMQJMSClient.createTopic("test");
+
+      ActiveMQTemporaryTopic topic = (ActiveMQTemporaryTopic) session.createTemporaryTopic();
+
+      MessageConsumer consumer = session.createConsumer(topic);
+      MessageProducer producer = session.createProducer(topic);
+      producer.send(session.createTextMessage("msg"));
+      connection.start();
+      assertNotNull(consumer.receive(500));
+
+      SimpleString topicAddress = topic.getSimpleAddress();
+
+      consumer.close();
+
+      assertNotNull(server.locateQueue(topicAddress));
+
+      IntegrationTestLogger.LOGGER.info("Topic name: " + topicAddress);
+
+      topic.delete();
+
+      connection.close();
+
+//      assertNotNull(server.getManagementService().getResource("jms.topic.test"));
+
+      assertNull(server.locateQueue(topicAddress));
+   }
+
+   @Before
+   @Override
+   public void setUp() throws Exception {
+      super.setUp();
+      ((ActiveMQJAASSecurityManager) server.getSecurityManager()).getConfiguration().addUser("guest", "guest");
+      ((ActiveMQJAASSecurityManager) server.getSecurityManager()).getConfiguration().setDefaultUser("guest");
+      ((ActiveMQJAASSecurityManager) server.getSecurityManager()).getConfiguration().addRole("guest", "allowAll");
+      Role role = new Role("allowAll", true, true, true, true, true, true, true);
+      Set<Role> roles = new HashSet<>();
+      roles.add(role);
+      server.getSecurityRepository().addMatch("#", roles);
+   }
+
+   @Override
+   protected boolean useSecurity() {
+      return true;
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsQueueTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsQueueTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsQueueTest.java
deleted file mode 100644
index 54f18dc..0000000
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoCreateJmsQueueTest.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * 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.tests.integration.client;
-
-import javax.jms.Connection;
-import javax.jms.InvalidDestinationException;
-import javax.jms.JMSSecurityException;
-import javax.jms.Message;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.activemq.artemis.api.core.SimpleString;
-import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
-import org.apache.activemq.artemis.core.security.Role;
-import org.apache.activemq.artemis.core.server.Queue;
-import org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager;
-import org.apache.activemq.artemis.tests.util.JMSTestBase;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-public class AutoCreateJmsQueueTest extends JMSTestBase {
-
-   @Test
-   public void testAutoCreateOnSendToQueue() throws Exception {
-      Connection connection = cf.createConnection();
-      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
-      javax.jms.Queue queue = ActiveMQJMSClient.createQueue("test");
-
-      MessageProducer producer = session.createProducer(queue);
-
-      final int numMessages = 100;
-
-      for (int i = 0; i < numMessages; i++) {
-         TextMessage mess = session.createTextMessage("msg" + i);
-         producer.send(mess);
-      }
-
-      producer.close();
-
-      MessageConsumer messageConsumer = session.createConsumer(queue);
-      connection.start();
-
-      for (int i = 0; i < numMessages; i++) {
-         Message m = messageConsumer.receive(5000);
-         Assert.assertNotNull(m);
-      }
-
-      // make sure the JMX control was created for the JMS queue
-      assertNotNull(server.getManagementService().getResource("jms.queue.test"));
-
-      connection.close();
-   }
-
-   @Test
-   public void testAutoCreateOnSendToQueueAnonymousProducer() throws Exception {
-      Connection connection = cf.createConnection();
-      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
-      javax.jms.Queue queue = ActiveMQJMSClient.createQueue("test");
-
-      MessageProducer producer = session.createProducer(null);
-
-      final int numMessages = 100;
-
-      for (int i = 0; i < numMessages; i++) {
-         TextMessage mess = session.createTextMessage("msg" + i);
-         producer.send(queue, mess);
-      }
-
-      producer.close();
-
-      MessageConsumer messageConsumer = session.createConsumer(queue);
-      connection.start();
-
-      for (int i = 0; i < numMessages; i++) {
-         Message m = messageConsumer.receive(5000);
-         Assert.assertNotNull(m);
-      }
-
-      connection.close();
-   }
-
-   @Test
-   public void testAutoCreateOnSendToQueueSecurity() throws Exception {
-      ((ActiveMQJAASSecurityManager) server.getSecurityManager()).getConfiguration().addUser("guest", "guest");
-      ((ActiveMQJAASSecurityManager) server.getSecurityManager()).getConfiguration().setDefaultUser("guest");
-      ((ActiveMQJAASSecurityManager) server.getSecurityManager()).getConfiguration().addRole("guest", "rejectAll");
-      Role role = new Role("rejectAll", false, false, false, false, false, false, false);
-      Set<Role> roles = new HashSet<>();
-      roles.add(role);
-      server.getSecurityRepository().addMatch("#", roles);
-      Connection connection = cf.createConnection();
-      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
-      javax.jms.Queue queue = ActiveMQJMSClient.createQueue("test");
-      MessageProducer producer = session.createProducer(queue);
-      TextMessage mess = session.createTextMessage("msg");
-
-      try {
-         producer.send(mess);
-         Assert.fail("Sending a message here should throw a JMSSecurityException");
-      }
-      catch (Exception e) {
-         Assert.assertTrue(e instanceof JMSSecurityException);
-      }
-
-      connection.close();
-   }
-
-   @Test
-   public void testAutoCreateOnSendToTopic() throws Exception {
-      Connection connection = cf.createConnection();
-      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
-      javax.jms.Topic topic = ActiveMQJMSClient.createTopic("test");
-
-      try {
-         MessageProducer producer = session.createProducer(topic);
-         Assert.fail("Creating a producer here should throw an exception");
-      }
-      catch (Exception e) {
-         Assert.assertTrue(e instanceof InvalidDestinationException);
-      }
-
-      connection.close();
-   }
-
-   @Test
-   public void testAutoCreateOnConsumeFromQueue() throws Exception {
-      Connection connection = null;
-      connection = cf.createConnection();
-      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
-      javax.jms.Queue queue = ActiveMQJMSClient.createQueue("test");
-
-      MessageConsumer messageConsumer = session.createConsumer(queue);
-      connection.start();
-
-      Message m = messageConsumer.receive(500);
-      Assert.assertNull(m);
-
-      Queue q = (Queue) server.getPostOffice().getBinding(new SimpleString("jms.queue.test")).getBindable();
-      Assert.assertEquals(0, q.getMessageCount());
-      Assert.assertEquals(0, q.getMessagesAdded());
-      connection.close();
-   }
-
-   @Test
-   public void testAutoCreateOnConsumeFromTopic() throws Exception {
-      Connection connection = null;
-      connection = cf.createConnection();
-      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
-      javax.jms.Topic topic = ActiveMQJMSClient.createTopic("test");
-
-      try {
-         MessageConsumer messageConsumer = session.createConsumer(topic);
-         Assert.fail("Creating a consumer here should throw an exception");
-      }
-      catch (Exception e) {
-         Assert.assertTrue(e instanceof InvalidDestinationException);
-      }
-
-      connection.close();
-   }
-
-   @Before
-   @Override
-   public void setUp() throws Exception {
-      super.setUp();
-      ((ActiveMQJAASSecurityManager) server.getSecurityManager()).getConfiguration().addUser("guest", "guest");
-      ((ActiveMQJAASSecurityManager) server.getSecurityManager()).getConfiguration().setDefaultUser("guest");
-      ((ActiveMQJAASSecurityManager) server.getSecurityManager()).getConfiguration().addRole("guest", "allowAll");
-      Role role = new Role("allowAll", true, true, true, true, true, true, true);
-      Set<Role> roles = new HashSet<>();
-      roles.add(role);
-      server.getSecurityRepository().addMatch("#", roles);
-   }
-
-   @Override
-   protected boolean useSecurity() {
-      return true;
-   }
-}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoDeleteJmsDestinationTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoDeleteJmsDestinationTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoDeleteJmsDestinationTest.java
new file mode 100644
index 0000000..44bb764
--- /dev/null
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoDeleteJmsDestinationTest.java
@@ -0,0 +1,199 @@
+/*
+ * 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.tests.integration.client;
+
+import javax.jms.Connection;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+
+import org.apache.activemq.artemis.api.core.SimpleString;
+import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
+import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
+import org.apache.activemq.artemis.tests.util.JMSTestBase;
+import org.apache.activemq.artemis.core.server.Queue;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class AutoDeleteJmsDestinationTest extends JMSTestBase {
+
+   @Test
+   public void testAutoDeleteQueue() throws Exception {
+      Connection connection = cf.createConnection();
+      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+      javax.jms.Queue queue = ActiveMQJMSClient.createQueue("test");
+
+      MessageProducer producer = session.createProducer(queue);
+
+      final int numMessages = 100;
+
+      for (int i = 0; i < numMessages; i++) {
+         TextMessage mess = session.createTextMessage("msg" + i);
+         producer.send(mess);
+      }
+
+      producer.close();
+
+      MessageConsumer messageConsumer = session.createConsumer(queue);
+      connection.start();
+
+      for (int i = 0; i < numMessages - 1; i++) {
+         Message m = messageConsumer.receive(5000);
+         Assert.assertNotNull(m);
+      }
+
+      session.close();
+
+      // ensure the queue is still there
+      Queue q = (Queue) server.getPostOffice().getBinding(new SimpleString("jms.queue.test")).getBindable();
+      Assert.assertEquals(1, q.getMessageCount());
+      Assert.assertEquals(numMessages, q.getMessagesAdded());
+
+      session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+      messageConsumer = session.createConsumer(queue);
+      Message m = messageConsumer.receive(5000);
+      Assert.assertNotNull(m);
+
+      connection.close();
+
+      // ensure the queue was removed
+      Assert.assertNull(server.getPostOffice().getBinding(new SimpleString("jms.queue.test")));
+
+      // make sure the JMX control was removed for the JMS queue
+      assertNull(server.getManagementService().getResource("jms.queue.test"));
+   }
+
+   @Test
+   public void testAutoDeleteNegative() throws Exception {
+      server.getAddressSettingsRepository().addMatch("#", new AddressSettings().setAutoDeleteJmsQueues(false));
+      Connection connection = cf.createConnection();
+      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+      javax.jms.Queue queue = ActiveMQJMSClient.createQueue("test");
+
+      MessageProducer producer = session.createProducer(queue);
+
+      final int numMessages = 100;
+
+      for (int i = 0; i < numMessages; i++) {
+         TextMessage mess = session.createTextMessage("msg" + i);
+         producer.send(mess);
+      }
+
+      producer.close();
+
+      MessageConsumer messageConsumer = session.createConsumer(queue);
+      connection.start();
+
+      for (int i = 0; i < numMessages - 1; i++) {
+         Message m = messageConsumer.receive(5000);
+         Assert.assertNotNull(m);
+      }
+
+      session.close();
+
+      // ensure the queue is still there
+      Queue q = (Queue) server.getPostOffice().getBinding(new SimpleString("jms.queue.test")).getBindable();
+      Assert.assertEquals(1, q.getMessageCount());
+      Assert.assertEquals(numMessages, q.getMessagesAdded());
+
+      session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+      messageConsumer = session.createConsumer(queue);
+      Message m = messageConsumer.receive(5000);
+      Assert.assertNotNull(m);
+
+      connection.close();
+
+      // ensure the queue was not removed
+      Assert.assertNotNull(server.getPostOffice().getBinding(new SimpleString("jms.queue.test")));
+   }
+
+   @Test
+   public void testAutoDeleteTopic() throws Exception {
+      Connection connection = cf.createConnection();
+      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+      javax.jms.Topic topic = ActiveMQJMSClient.createTopic("test");
+
+      MessageConsumer messageConsumer = session.createConsumer(topic);
+      MessageProducer producer = session.createProducer(topic);
+
+      final int numMessages = 100;
+
+      for (int i = 0; i < numMessages; i++) {
+         TextMessage mess = session.createTextMessage("msg" + i);
+         producer.send(mess);
+      }
+
+      producer.close();
+      connection.start();
+
+      for (int i = 0; i < numMessages; i++) {
+         Message m = messageConsumer.receive(5000);
+         Assert.assertNotNull(m);
+      }
+
+      connection.close();
+
+      // ensure the topic was removed
+      Assert.assertNull(server.locateQueue(new SimpleString("jms.topic.test")));
+
+      // make sure the JMX control was removed for the JMS topic
+      assertNull(server.getManagementService().getResource("jms.topic.test"));
+   }
+
+   @Test
+   public void testAutoDeleteTopicDurableSubscriber() throws Exception {
+      Connection connection = cf.createConnection();
+      connection.setClientID("myClientID");
+      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+      javax.jms.Topic topic = ActiveMQJMSClient.createTopic("test");
+
+      MessageConsumer messageConsumer = session.createDurableConsumer(topic, "mySub");
+      MessageProducer producer = session.createProducer(topic);
+
+      final int numMessages = 100;
+
+      for (int i = 0; i < numMessages; i++) {
+         TextMessage mess = session.createTextMessage("msg" + i);
+         producer.send(mess);
+      }
+
+      producer.close();
+      connection.start();
+
+      for (int i = 0; i < numMessages; i++) {
+         Message m = messageConsumer.receive(5000);
+         Assert.assertNotNull(m);
+      }
+
+      messageConsumer.close();
+      session.unsubscribe("mySub");
+
+      connection.close();
+
+      // ensure the topic was removed
+      Assert.assertNull(server.locateQueue(new SimpleString("jms.topic.test")));
+
+      // make sure the JMX control was removed for the JMS topic
+      assertNull(server.getManagementService().getResource("jms.topic.test"));
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoDeleteJmsQueueTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoDeleteJmsQueueTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoDeleteJmsQueueTest.java
deleted file mode 100644
index 81cd6ec..0000000
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/AutoDeleteJmsQueueTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * 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.tests.integration.client;
-
-import javax.jms.Connection;
-import javax.jms.Message;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-
-import org.apache.activemq.artemis.api.core.SimpleString;
-import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
-import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
-import org.apache.activemq.artemis.tests.util.JMSTestBase;
-import org.apache.activemq.artemis.core.server.Queue;
-import org.junit.Assert;
-import org.junit.Test;
-
-public class AutoDeleteJmsQueueTest extends JMSTestBase {
-
-   @Test
-   public void testAutoDelete() throws Exception {
-      Connection connection = cf.createConnection();
-      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
-      javax.jms.Queue queue = ActiveMQJMSClient.createQueue("test");
-
-      MessageProducer producer = session.createProducer(queue);
-
-      final int numMessages = 100;
-
-      for (int i = 0; i < numMessages; i++) {
-         TextMessage mess = session.createTextMessage("msg" + i);
-         producer.send(mess);
-      }
-
-      producer.close();
-
-      MessageConsumer messageConsumer = session.createConsumer(queue);
-      connection.start();
-
-      for (int i = 0; i < numMessages - 1; i++) {
-         Message m = messageConsumer.receive(5000);
-         Assert.assertNotNull(m);
-      }
-
-      session.close();
-
-      // ensure the queue is still there
-      Queue q = (Queue) server.getPostOffice().getBinding(new SimpleString("jms.queue.test")).getBindable();
-      Assert.assertEquals(1, q.getMessageCount());
-      Assert.assertEquals(numMessages, q.getMessagesAdded());
-
-      session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-      messageConsumer = session.createConsumer(queue);
-      Message m = messageConsumer.receive(5000);
-      Assert.assertNotNull(m);
-
-      connection.close();
-
-      // ensure the queue was removed
-      Assert.assertNull(server.getPostOffice().getBinding(new SimpleString("jms.queue.test")));
-
-      // make sure the JMX control was removed for the JMS queue
-      assertNull(server.getManagementService().getResource("jms.queue.test"));
-   }
-
-   @Test
-   public void testAutoDeleteNegative() throws Exception {
-      server.getAddressSettingsRepository().addMatch("#", new AddressSettings().setAutoDeleteJmsQueues(false));
-      Connection connection = cf.createConnection();
-      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
-      javax.jms.Queue queue = ActiveMQJMSClient.createQueue("test");
-
-      MessageProducer producer = session.createProducer(queue);
-
-      final int numMessages = 100;
-
-      for (int i = 0; i < numMessages; i++) {
-         TextMessage mess = session.createTextMessage("msg" + i);
-         producer.send(mess);
-      }
-
-      producer.close();
-
-      MessageConsumer messageConsumer = session.createConsumer(queue);
-      connection.start();
-
-      for (int i = 0; i < numMessages - 1; i++) {
-         Message m = messageConsumer.receive(5000);
-         Assert.assertNotNull(m);
-      }
-
-      session.close();
-
-      // ensure the queue is still there
-      Queue q = (Queue) server.getPostOffice().getBinding(new SimpleString("jms.queue.test")).getBindable();
-      Assert.assertEquals(1, q.getMessageCount());
-      Assert.assertEquals(numMessages, q.getMessagesAdded());
-
-      session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
-      messageConsumer = session.createConsumer(queue);
-      Message m = messageConsumer.receive(5000);
-      Assert.assertNotNull(m);
-
-      connection.close();
-
-      // ensure the queue was not removed
-      Assert.assertNotNull(server.getPostOffice().getBinding(new SimpleString("jms.queue.test")));
-   }
-}

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/PagingOrderTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/PagingOrderTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/PagingOrderTest.java
index 8c2d9cd..8f87803 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/PagingOrderTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/client/PagingOrderTest.java
@@ -607,7 +607,7 @@ public class PagingOrderTest extends ActiveMQTestBase {
 
       jmsServer.createTopic(true, "tt", "/topic/TT");
 
-      server.getActiveMQServerControl().addAddressSettings("jms.topic.TT", "DLQ", "DLQ", -1, false, 5, 1024 * 1024, 1024 * 10, 5, 5, 1, 1000, 0, false, "PAGE", -1, 10, "KILL", true, true);
+      server.getActiveMQServerControl().addAddressSettings("jms.topic.TT", "DLQ", "DLQ", -1, false, 5, 1024 * 1024, 1024 * 10, 5, 5, 1, 1000, 0, false, "PAGE", -1, 10, "KILL", true, true, true, true);
 
       ActiveMQJMSConnectionFactory cf = (ActiveMQJMSConnectionFactory) ActiveMQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType.CF, new TransportConfiguration(INVM_CONNECTOR_FACTORY));
 
@@ -663,7 +663,7 @@ public class PagingOrderTest extends ActiveMQTestBase {
       jmsServer.setRegistry(new JndiBindingRegistry(context));
       jmsServer.start();
 
-      server.getActiveMQServerControl().addAddressSettings("jms.queue.Q1", "DLQ", "DLQ", -1, false, 5, 100 * 1024, 10 * 1024, 5, 5, 1, 1000, 0, false, "PAGE", -1, 10, "KILL", true, true);
+      server.getActiveMQServerControl().addAddressSettings("jms.queue.Q1", "DLQ", "DLQ", -1, false, 5, 100 * 1024, 10 * 1024, 5, 5, 1, 1000, 0, false, "PAGE", -1, 10, "KILL", true, true, true, true);
 
       jmsServer.createQueue(true, "Q1", null, true, "/queue/Q1");
 

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/jms2client/NonExistentQueueTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/jms2client/NonExistentQueueTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/jms2client/NonExistentQueueTest.java
index 913ef9a..1115305 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/jms2client/NonExistentQueueTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/jms2client/NonExistentQueueTest.java
@@ -32,6 +32,7 @@ import java.util.Random;
 import org.apache.activemq.artemis.api.core.TransportConfiguration;
 import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
 import org.apache.activemq.artemis.api.jms.JMSFactoryType;
+import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
 import org.apache.activemq.artemis.tests.util.JMSTestBase;
 import org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnectorFactory;
 import org.junit.Assert;
@@ -54,6 +55,7 @@ public class NonExistentQueueTest extends JMSTestBase {
 
    @Test
    public void sendToNonExistentDestination() throws Exception {
+      server.getAddressSettingsRepository().addMatch("#", new AddressSettings().setAutoCreateJmsTopics(false));
       Destination destination = ActiveMQJMSClient.createTopic("DoesNotExist");
       TransportConfiguration transportConfiguration = new TransportConfiguration(InVMConnectorFactory.class.getName());
       ConnectionFactory localConnectionFactory = ActiveMQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType.CF, transportConfiguration);

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
index 5595ddf..aa4d685 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlTest.java
@@ -468,12 +468,14 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
       String slowConsumerPolicy = SlowConsumerPolicy.KILL.toString();
       boolean autoCreateJmsQueues = false;
       boolean autoDeleteJmsQueues = false;
+      boolean autoCreateJmsTopics = false;
+      boolean autoDeleteJmsTopics = false;
 
-      serverControl.addAddressSettings(addressMatch, DLA, expiryAddress, expiryDelay, lastValueQueue, deliveryAttempts, maxSizeBytes, pageSizeBytes, pageMaxCacheSize, redeliveryDelay, redeliveryMultiplier, maxRedeliveryDelay, redistributionDelay, sendToDLAOnNoRoute, addressFullMessagePolicy, slowConsumerThreshold, slowConsumerCheckPeriod, slowConsumerPolicy, autoCreateJmsQueues, autoDeleteJmsQueues);
+      serverControl.addAddressSettings(addressMatch, DLA, expiryAddress, expiryDelay, lastValueQueue, deliveryAttempts, maxSizeBytes, pageSizeBytes, pageMaxCacheSize, redeliveryDelay, redeliveryMultiplier, maxRedeliveryDelay, redistributionDelay, sendToDLAOnNoRoute, addressFullMessagePolicy, slowConsumerThreshold, slowConsumerCheckPeriod, slowConsumerPolicy, autoCreateJmsQueues, autoDeleteJmsQueues, autoCreateJmsTopics, autoDeleteJmsTopics);
 
       boolean ex = false;
       try {
-         serverControl.addAddressSettings(addressMatch, DLA, expiryAddress, expiryDelay, lastValueQueue, deliveryAttempts, 100, 1000, pageMaxCacheSize, redeliveryDelay, redeliveryMultiplier, maxRedeliveryDelay, redistributionDelay, sendToDLAOnNoRoute, addressFullMessagePolicy, slowConsumerThreshold, slowConsumerCheckPeriod, slowConsumerPolicy, autoCreateJmsQueues, autoDeleteJmsQueues);
+         serverControl.addAddressSettings(addressMatch, DLA, expiryAddress, expiryDelay, lastValueQueue, deliveryAttempts, 100, 1000, pageMaxCacheSize, redeliveryDelay, redeliveryMultiplier, maxRedeliveryDelay, redistributionDelay, sendToDLAOnNoRoute, addressFullMessagePolicy, slowConsumerThreshold, slowConsumerCheckPeriod, slowConsumerPolicy, autoCreateJmsQueues, autoDeleteJmsQueues, autoCreateJmsTopics, autoDeleteJmsTopics);
       }
       catch (Exception expected) {
          ex = true;
@@ -504,8 +506,10 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
       assertEquals(slowConsumerPolicy, info.getSlowConsumerPolicy());
       assertEquals(autoCreateJmsQueues, info.isAutoCreateJmsQueues());
       assertEquals(autoDeleteJmsQueues, info.isAutoDeleteJmsQueues());
+      assertEquals(autoCreateJmsTopics, info.isAutoCreateJmsTopics());
+      assertEquals(autoDeleteJmsTopics, info.isAutoDeleteJmsTopics());
 
-      serverControl.addAddressSettings(addressMatch, DLA, expiryAddress, expiryDelay, lastValueQueue, deliveryAttempts, -1, 1000, pageMaxCacheSize, redeliveryDelay, redeliveryMultiplier, maxRedeliveryDelay, redistributionDelay, sendToDLAOnNoRoute, addressFullMessagePolicy, slowConsumerThreshold, slowConsumerCheckPeriod, slowConsumerPolicy, autoCreateJmsQueues, autoDeleteJmsQueues);
+      serverControl.addAddressSettings(addressMatch, DLA, expiryAddress, expiryDelay, lastValueQueue, deliveryAttempts, -1, 1000, pageMaxCacheSize, redeliveryDelay, redeliveryMultiplier, maxRedeliveryDelay, redistributionDelay, sendToDLAOnNoRoute, addressFullMessagePolicy, slowConsumerThreshold, slowConsumerCheckPeriod, slowConsumerPolicy, autoCreateJmsQueues, autoDeleteJmsQueues, autoCreateJmsTopics, autoDeleteJmsTopics);
 
       jsonString = serverControl.getAddressSettingsAsJSON(exactAddress);
       info = AddressSettingsInfo.from(jsonString);
@@ -528,10 +532,12 @@ public class ActiveMQServerControlTest extends ManagementTestBase {
       assertEquals(slowConsumerPolicy, info.getSlowConsumerPolicy());
       assertEquals(autoCreateJmsQueues, info.isAutoCreateJmsQueues());
       assertEquals(autoDeleteJmsQueues, info.isAutoDeleteJmsQueues());
+      assertEquals(autoCreateJmsTopics, info.isAutoCreateJmsTopics());
+      assertEquals(autoDeleteJmsTopics, info.isAutoDeleteJmsTopics());
 
       ex = false;
       try {
-         serverControl.addAddressSettings(addressMatch, DLA, expiryAddress, expiryDelay, lastValueQueue, deliveryAttempts, -2, 1000, pageMaxCacheSize, redeliveryDelay, redeliveryMultiplier, maxRedeliveryDelay, redistributionDelay, sendToDLAOnNoRoute, addressFullMessagePolicy, slowConsumerThreshold, slowConsumerCheckPeriod, slowConsumerPolicy, autoCreateJmsQueues, autoDeleteJmsQueues);
+         serverControl.addAddressSettings(addressMatch, DLA, expiryAddress, expiryDelay, lastValueQueue, deliveryAttempts, -2, 1000, pageMaxCacheSize, redeliveryDelay, redeliveryMultiplier, maxRedeliveryDelay, redistributionDelay, sendToDLAOnNoRoute, addressFullMessagePolicy, slowConsumerThreshold, slowConsumerCheckPeriod, slowConsumerPolicy, autoCreateJmsQueues, autoDeleteJmsQueues, autoCreateJmsTopics, autoDeleteJmsTopics);
       }
       catch (Exception e) {
          ex = true;

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
index 7519fef..0eb77d4 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ActiveMQServerControlUsingCoreTest.java
@@ -587,8 +587,10 @@ public class ActiveMQServerControlUsingCoreTest extends ActiveMQServerControlTes
                                         @Parameter(desc = "how often (in seconds) to check for slow consumers", name = "slowConsumerCheckPeriod") long slowConsumerCheckPeriod,
                                         @Parameter(desc = "the policy to use when a slow consumer is detected", name = "slowConsumerPolicy") String slowConsumerPolicy,
                                         @Parameter(desc = "allow queues to be created automatically", name = "autoCreateJmsQueues") boolean autoCreateJmsQueues,
-                                        @Parameter(desc = "allow auto-created queues to be deleted automatically", name = "autoDeleteJmsQueues") boolean autoDeleteJmsQueues) throws Exception {
-            proxy.invokeOperation("addAddressSettings", addressMatch, DLA, expiryAddress, expiryDelay, lastValueQueue, deliveryAttempts, maxSizeBytes, pageSizeBytes, pageMaxCacheSize, redeliveryDelay, redeliveryMultiplier, maxRedeliveryDelay, redistributionDelay, sendToDLAOnNoRoute, addressFullMessagePolicy, slowConsumerThreshold, slowConsumerCheckPeriod, slowConsumerPolicy, autoCreateJmsQueues, autoDeleteJmsQueues);
+                                        @Parameter(desc = "allow auto-created queues to be deleted automatically", name = "autoDeleteJmsQueues") boolean autoDeleteJmsQueues,
+                                        @Parameter(desc = "allow topics to be created automatically", name = "autoCreateJmsTopics") boolean autoCreateJmsTopics,
+                                        @Parameter(desc = "allow auto-created topics to be deleted automatically", name = "autoDeleteJmsTopics") boolean autoDeleteJmsTopics) throws Exception {
+            proxy.invokeOperation("addAddressSettings", addressMatch, DLA, expiryAddress, expiryDelay, lastValueQueue, deliveryAttempts, maxSizeBytes, pageSizeBytes, pageMaxCacheSize, redeliveryDelay, redeliveryMultiplier, maxRedeliveryDelay, redistributionDelay, sendToDLAOnNoRoute, addressFullMessagePolicy, slowConsumerThreshold, slowConsumerCheckPeriod, slowConsumerPolicy, autoCreateJmsQueues, autoDeleteJmsQueues, autoCreateJmsTopics, autoDeleteJmsTopics);
          }
 
          @Override

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementWithStompTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementWithStompTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementWithStompTest.java
index d8b0995..97ef171 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementWithStompTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/management/ManagementWithStompTest.java
@@ -30,6 +30,8 @@ import org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptorFactory
 import org.apache.activemq.artemis.core.remoting.impl.netty.TransportConstants;
 import org.apache.activemq.artemis.core.server.ActiveMQServer;
 import org.apache.activemq.artemis.core.server.ActiveMQServers;
+import org.apache.activemq.artemis.jms.server.JMSServerManager;
+import org.apache.activemq.artemis.jms.server.impl.JMSServerManagerImpl;
 import org.apache.activemq.artemis.utils.RandomUtil;
 import org.junit.Assert;
 import org.junit.Before;
@@ -52,6 +54,8 @@ public class ManagementWithStompTest extends ManagementTestBase {
 
    protected ActiveMQServer server;
 
+   protected JMSServerManager jmsServer;
+
    protected ClientSession session;
 
    private Socket stompSocket;
@@ -169,7 +173,9 @@ public class ManagementWithStompTest extends ManagementTestBase {
 
       server = addServer(ActiveMQServers.newActiveMQServer(config, mbeanServer, false, "brianm", "wombats"));
 
-      server.start();
+      jmsServer = new JMSServerManagerImpl(server);
+
+      jmsServer.start();
 
       locator = createInVMNonHALocator().setBlockOnNonDurableSend(true);
       ClientSessionFactory sf = createSessionFactory(locator);

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/amq/JmsTopicRequestReplyTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/amq/JmsTopicRequestReplyTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/amq/JmsTopicRequestReplyTest.java
index 5228d03..ad2e85b 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/amq/JmsTopicRequestReplyTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/openwire/amq/JmsTopicRequestReplyTest.java
@@ -57,11 +57,16 @@ public class JmsTopicRequestReplyTest extends BasicOpenWireTest implements Messa
       clientConnection = createConnection();
       clientConnection.setClientID("ClientConnection:" + name.getMethodName());
 
+      System.out.println("Creating session.");
       Session session = clientConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
 
       clientConnection.start();
 
       Destination replyDestination = createTemporaryDestination(session);
+      System.out.println("Created temporary topic " + replyDestination);
+
+      System.out.println("Creating consumer on: " + replyDestination);
+      MessageConsumer replyConsumer = session.createConsumer(replyDestination);
 
       // lets test the destination
       clientSideClientID = clientConnection.getClientID();
@@ -74,12 +79,15 @@ public class JmsTopicRequestReplyTest extends BasicOpenWireTest implements Messa
       System.out.println("Both the clientID and destination clientID match properly: " + clientSideClientID);
 
       /* build queues */
-      MessageProducer requestProducer = session.createProducer(requestDestination);
-      MessageConsumer replyConsumer = session.createConsumer(replyDestination);
 
       /* build requestmessage */
       TextMessage requestMessage = session.createTextMessage("Olivier");
       requestMessage.setJMSReplyTo(replyDestination);
+
+      System.out.println("Creating producer on " + requestDestination);
+      MessageProducer requestProducer = session.createProducer(requestDestination);
+
+      System.out.println("Sending message to " + requestDestination);
       requestProducer.send(requestMessage);
 
       System.out.println("Sent request.");
@@ -116,7 +124,7 @@ public class JmsTopicRequestReplyTest extends BasicOpenWireTest implements Messa
       try {
          TextMessage requestMessage = (TextMessage) message;
 
-         System.out.println("Received request.");
+         System.out.println("Received request from " + requestDestination);
          System.out.println(requestMessage.toString());
 
          Destination replyDestination = requestMessage.getJMSReplyTo();
@@ -140,7 +148,7 @@ public class JmsTopicRequestReplyTest extends BasicOpenWireTest implements Messa
             replyProducer.send(replyDestination, replyMessage);
          }
 
-         System.out.println("Sent reply.");
+         System.out.println("Sent reply to " + replyDestination);
          System.out.println(replyMessage.toString());
       }
       catch (JMSException e) {
@@ -180,6 +188,7 @@ public class JmsTopicRequestReplyTest extends BasicOpenWireTest implements Messa
       requestDestination = createDestination(serverSession);
 
       /* build queues */
+      System.out.println("Creating consumer on: " + requestDestination);
       final MessageConsumer requestConsumer = serverSession.createConsumer(requestDestination);
       if (useAsyncConsume) {
          requestConsumer.setMessageListener(this);
@@ -232,6 +241,7 @@ public class JmsTopicRequestReplyTest extends BasicOpenWireTest implements Messa
          ((TemporaryTopic) dest).delete();
       }
       else {
+         System.out.println("Deleting: " + dest);
          ((TemporaryQueue) dest).delete();
       }
    }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/stomp/StompTest.java
----------------------------------------------------------------------
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/stomp/StompTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/stomp/StompTest.java
index 81b5511..41b5c35 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/stomp/StompTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/stomp/StompTest.java
@@ -233,6 +233,43 @@ public class StompTest extends StompTestBase {
       assertNull(server.getActiveMQServer().getPostOffice().getBinding(new SimpleString(ResourceNames.JMS_QUEUE + nonExistentQueue)));
    }
 
+   @Test
+   public void testSendMessageToNonExistentTopic() throws Exception {
+      String nonExistentTopic = RandomUtil.randomString();
+      String frame = "CONNECT\n" + "login: brianm\n" + "passcode: wombats\n\n" + Stomp.NULL;
+      sendFrame(frame);
+
+      frame = receiveFrame(10000);
+      Assert.assertTrue(frame.startsWith("CONNECTED"));
+
+      // first send a message to ensure that sending to a non-existent topic won't throw an error
+      frame = "SEND\n" + "destination:" + getTopicPrefix() + nonExistentTopic + "\n\n" + "Hello World" + Stomp.NULL;
+      sendFrame(frame);
+      receiveFrame(1000);
+
+      // create a subscription on the topic and send/receive another message
+      MessageConsumer consumer = session.createConsumer(ActiveMQJMSClient.createTopic(nonExistentTopic));
+      sendFrame(frame);
+      receiveFrame(1000);
+      TextMessage message = (TextMessage) consumer.receive(1000);
+      Assert.assertNotNull(message);
+      Assert.assertEquals("Hello World", message.getText());
+      // Assert default priority 4 is used when priority header is not set
+      Assert.assertEquals("getJMSPriority", 4, message.getJMSPriority());
+
+      // Make sure that the timestamp is valid - should
+      // be very close to the current time.
+      long tnow = System.currentTimeMillis();
+      long tmsg = message.getJMSTimestamp();
+      Assert.assertTrue(Math.abs(tnow - tmsg) < 1500);
+
+      assertNotNull(server.getActiveMQServer().getPostOffice().getBinding(new SimpleString(ResourceNames.JMS_TOPIC + nonExistentTopic)));
+
+      // closing the consumer here should trigger auto-deletion of the topic
+      consumer.close();
+      assertNull(server.getActiveMQServer().getPostOffice().getBinding(new SimpleString(ResourceNames.JMS_TOPIC + nonExistentTopic)));
+   }
+
    /*
     * Some STOMP clients erroneously put a new line \n *after* the terminating NUL char at the end of the frame
     * This means next frame read might have a \n a the beginning.

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/MessageProducerTest.java
----------------------------------------------------------------------
diff --git a/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/MessageProducerTest.java b/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/MessageProducerTest.java
index cb7e493..19bb908 100644
--- a/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/MessageProducerTest.java
+++ b/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/MessageProducerTest.java
@@ -32,6 +32,7 @@ import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient;
+import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
 import org.apache.activemq.artemis.jms.tests.message.SimpleJMSMessage;
 import org.apache.activemq.artemis.jms.tests.message.SimpleJMSTextMessage;
 import org.apache.activemq.artemis.jms.tests.util.ProxyAssertSupport;
@@ -348,6 +349,7 @@ public class MessageProducerTest extends JMSTestCase {
 
    @Test
    public void testCreateProducerOnInexistentDestination() throws Exception {
+      getJmsServer().getAddressSettingsRepository().addMatch("#", new AddressSettings().setAutoCreateJmsTopics(false));
       Connection pconn = createConnection();
       try {
          Session ps = pconn.createSession(false, Session.AUTO_ACKNOWLEDGE);

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/e53649a6/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/SessionTest.java
----------------------------------------------------------------------
diff --git a/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/SessionTest.java b/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/SessionTest.java
index e6a8909..5f2ad27 100644
--- a/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/SessionTest.java
+++ b/tests/jms-tests/src/test/java/org/apache/activemq/artemis/jms/tests/SessionTest.java
@@ -172,6 +172,7 @@ public class SessionTest extends ActiveMQServerTestCase {
 
    @Test
    public void testCreateNonExistentTopic() throws Exception {
+      getJmsServer().getAddressSettingsRepository().addMatch("#", new AddressSettings().setAutoCreateJmsTopics(false));
       Connection conn = getConnectionFactory().createConnection();
       Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
       try {
@@ -201,6 +202,7 @@ public class SessionTest extends ActiveMQServerTestCase {
 
    @Test
    public void testCreateTopicWhileQueueWithSameNameExists() throws Exception {
+      getJmsServer().getAddressSettingsRepository().addMatch("#", new AddressSettings().setAutoCreateJmsTopics(false));
       Connection conn = getConnectionFactory().createConnection();
       Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
       try {