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 2014/12/05 16:38:35 UTC

[11/13] activemq-6 git commit: ACTIVEMQ6-14 Replace JNDI server with client impl

ACTIVEMQ6-14 Replace JNDI server with client impl


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

Branch: refs/heads/master
Commit: e6a3d3a0c5962b7c83b2fa3693bc12cb3e5ed02e
Parents: e419feb
Author: jbertram <jb...@redhat.com>
Authored: Wed Dec 3 08:50:16 2014 -0600
Committer: jbertram <jb...@redhat.com>
Committed: Fri Dec 5 09:27:52 2014 -0600

----------------------------------------------------------------------
 .gitignore                                      |   5 -
 .../org/apache/activemq/cli/commands/Run.java   |  16 -
 .../java/org/apache/activemq/dto/BrokerDTO.java |   3 -
 .../java/org/apache/activemq/dto/NamingDTO.java |  39 -
 .../org/apache/activemq/dto/jaxb.index          |   1 -
 .../jndi/ActiveMQInitialContextFactory.java     | 496 +++++++++++++
 .../apache/activemq/jndi/LazyCreateContext.java |  43 ++
 .../apache/activemq/jndi/NameParserImpl.java    |  30 +
 .../apache/activemq/jndi/ReadOnlyContext.java   | 534 ++++++++++++++
 activemq-jms-server/pom.xml                     |   4 -
 .../jms/server/JMSServerConfigParser.java       |   9 -
 .../jms/server/embedded/EmbeddedJMS.java        |   6 +
 .../server/impl/JMSServerConfigParserImpl.java  | 339 +--------
 .../jms/server/impl/JMSServerDeployer.java      |  48 +-
 .../jms/server/impl/JMSServerManagerImpl.java   |  14 +-
 .../jms/server/impl/StandaloneNamingServer.java | 170 -----
 .../src/main/resources/schema/activemq-jms.xsd  | 272 +------
 activemq-ra/pom.xml                             |   7 +
 .../integration/EmbeddedRestActiveMQJMS.java    |   4 +
 .../rest/queue/QueueDestinationsResource.java   |   7 -
 .../rest/topic/TopicDestinationsResource.java   |   7 -
 .../apache/activemq/rest/test/EmbeddedTest.java |  14 +-
 .../src/test/resources/activemq-jms.xml         |  13 +-
 distribution/activemq/pom.xml                   |   5 -
 distribution/activemq/src/main/assembly/dep.xml |   1 -
 .../activemq/src/main/resources/bin/activemq    |   4 +-
 .../src/main/resources/bin/activemq.cmd         |   2 +-
 .../resources/config/clustered/activemq-jms.xml |  48 +-
 .../resources/config/clustered/jndi.properties  |   2 -
 .../config/non-clustered/activemq-jms.xml       |  48 +-
 .../config/non-clustered/jndi.properties        |   2 -
 .../replicated/activemq-configuration.xml       |   2 +-
 .../config/replicated/activemq-jms.xml          |  48 +-
 .../resources/config/replicated/jndi.properties |   2 -
 .../shared-store/activemq-configuration.xml     |   2 +-
 .../config/shared-store/activemq-jms.xml        |  48 +-
 .../config/shared-store/jndi.properties         |   2 -
 distribution/jnp-client/pom.xml                 |  75 --
 distribution/pom.xml                            |   5 -
 docs/user-manual/en/appserver-integration.xml   |  53 +-
 docs/user-manual/en/client-classpath.xml        |   7 -
 docs/user-manual/en/client-reconnection.xml     |  25 +-
 docs/user-manual/en/clusters.xml                |  65 +-
 docs/user-manual/en/configuration-index.xml     | 330 +--------
 docs/user-manual/en/configuring-transports.xml  |  29 +-
 docs/user-manual/en/flow-control.xml            |  79 +-
 docs/user-manual/en/interoperability.xml        |   5 +-
 docs/user-manual/en/large-messages.xml          |  41 +-
 docs/user-manual/en/logging.xml                 |  18 +-
 docs/user-manual/en/message-grouping.xml        |  37 +-
 docs/user-manual/en/pre-acknowledge.xml         |  16 +-
 docs/user-manual/en/spring-integration.xml      |  13 +-
 docs/user-manual/en/thread-pooling.xml          |  22 +-
 docs/user-manual/en/using-jms.xml               | 388 +++++-----
 examples/core/embedded-remote/pom.xml           |   5 -
 examples/core/embedded/pom.xml                  |   5 -
 examples/core/perf/pom.xml                      |  10 -
 examples/core/vertx-connector/pom.xml           |  10 -
 .../src/main/resources/server0/activemq-jms.xml |  13 +-
 .../config/server.properties                    |   2 +-
 .../common/example/ActiveMQExample.java         |   5 +-
 examples/jms/aerogear/pom.xml                   |   7 +-
 .../activemq/jms/example/AerogearExample.java   |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/applet/pom.xml                     |   7 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/application-layer-failover/pom.xml |   9 +-
 .../ApplicationLayerFailoverExample.java        |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  13 +-
 examples/jms/bridge/pom.xml                     |   9 +-
 .../activemq/jms/example/BridgeExample.java     |   8 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  13 +-
 examples/jms/browser/pom.xml                    |   7 +-
 .../jms/example/QueueBrowserExample.java        |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/client-kickoff/pom.xml             |   7 +-
 .../jms/example/ClientKickoffExample.java       |   2 +-
 .../resources/hornetq/server0/activemq-jms.xml  |   9 -
 .../jms/client-side-failoverlistener/pom.xml    |   9 +-
 .../ClientSideFailoverListerExample.java        |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  27 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  26 +-
 examples/jms/client-side-load-balancing/pom.xml |   9 +-
 .../example/ClientSideLoadBalancingExample.java |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  11 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  11 +-
 .../resources/hornetq/server2/activemq-jms.xml  |  11 +-
 .../jms/clustered-durable-subscription/pom.xml  |   9 +-
 .../ClusteredDurableSubscriptionExample.java    |   6 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  13 +-
 examples/jms/clustered-grouping/pom.xml         |  11 +-
 .../jms/example/ClusteredGroupingExample.java   |   8 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  13 +-
 .../resources/hornetq/server2/activemq-jms.xml  |  13 +-
 examples/jms/clustered-jgroups/pom.xml          |   9 +-
 .../jms/example/ClusteredJgroupsExample.java    |   6 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 .../hornetq/server0/client-jndi.properties      |   5 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  13 +-
 .../hornetq/server1/client-jndi.properties      |   5 +-
 examples/jms/clustered-queue/pom.xml            |   9 +-
 .../jms/example/ClusteredQueueExample.java      |   6 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  13 +-
 examples/jms/clustered-standalone/pom.xml       |  11 +-
 .../jms/example/ClusteredStandaloneExample.java |   8 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  12 +-
 .../resources/hornetq/server2/activemq-jms.xml  |  13 +-
 examples/jms/clustered-static-discovery/pom.xml |  13 +-
 .../example/StaticClusteredQueueExample.java    |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  25 +-
 .../resources/hornetq/server0/jndi.properties   |   2 -
 .../resources/hornetq/server1/activemq-jms.xml  |  25 +-
 .../resources/hornetq/server1/jndi.properties   |   2 -
 .../resources/hornetq/server2/activemq-jms.xml  |  26 +-
 .../resources/hornetq/server2/jndi.properties   |  17 -
 .../resources/hornetq/server3/activemq-jms.xml  |  26 +-
 .../resources/hornetq/server3/jndi.properties   |   2 -
 examples/jms/clustered-static-oneway/pom.xml    |  11 +-
 .../jms/example/ClusterStaticOnewayExample.java |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  25 +-
 .../resources/hornetq/server0/jndi.properties   |   2 -
 .../resources/hornetq/server1/activemq-jms.xml  |  25 +-
 .../resources/hornetq/server1/jndi.properties   |   2 -
 .../resources/hornetq/server2/activemq-jms.xml  |  26 +-
 .../resources/hornetq/server2/jndi.properties   |  18 -
 examples/jms/clustered-topic/pom.xml            |   9 +-
 .../jms/example/ClusteredTopicExample.java      |   6 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  13 +-
 .../jms/colocated-failover-scale-down/pom.xml   |   9 +-
 .../ColocatedFailoverScaleDownExample.java      |   6 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  24 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  24 +-
 examples/jms/colocated-failover/pom.xml         |   9 +-
 .../jms/example/ColocatedFailoverExample.java   |   6 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  24 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  25 +-
 examples/jms/consumer-rate-limit/pom.xml        |   7 +-
 .../jms/example/ConsumerRateLimitExample.java   |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  18 +-
 .../hornetq/server0/client-jndi.properties      |   5 +-
 examples/jms/dead-letter/pom.xml                |   7 +-
 .../activemq/jms/example/DeadLetterExample.java |   6 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  17 +-
 .../hornetq/server0/client-jndi.properties      |   5 +-
 examples/jms/delayed-redelivery/pom.xml         |   7 +-
 .../jms/example/DelayedRedeliveryExample.java   |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  17 +-
 .../hornetq/server0/client-jndi.properties      |   5 +-
 examples/jms/divert/pom.xml                     |   9 +-
 .../activemq/jms/example/DivertExample.java     |  12 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  28 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  15 +-
 examples/jms/durable-subscription/pom.xml       |   7 +-
 .../jms/example/DurableSubscriptionExample.java |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 .../hornetq/server0/client-jndi.properties      |   5 +-
 examples/jms/embedded-simple/pom.xml            |   9 +-
 .../activemq/jms/example/EmbeddedExample.java   |   2 +-
 .../src/main/resources/activemq-jms.xml         |  13 +-
 examples/jms/embedded/pom.xml                   |   9 +-
 examples/jms/embedded/readme.html               |  27 +-
 .../activemq/jms/example/EmbeddedExample.java   |   4 +-
 examples/jms/expiry/pom.xml                     |   7 +-
 .../activemq/jms/example/ExpiryExample.java     |   6 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  17 +-
 examples/jms/ha-policy-autobackup/pom.xml       |   9 +-
 .../jms/example/HAPolicyAutoBackupExample.java  |   6 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  24 +-
 examples/jms/http-transport/pom.xml             |   7 +-
 .../jms/example/HttpTransportExample.java       |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 .../jms/instantiate-connection-factory/pom.xml  |   7 +-
 examples/jms/interceptor/pom.xml                |   7 +-
 .../jms/example/InterceptorExample.java         |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/jaas/pom.xml                       |   7 +-
 .../activemq/jms/example/JAASExample.java       |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/jms-auto-closeable/pom.xml         |   7 +-
 .../jms/example/JMSAutoCloseableExample.java    |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/jms-bridge/pom.xml                 |   9 +-
 examples/jms/jms-bridge/readme.html             |  20 +-
 .../activemq/jms/example/JMSBridgeExample.java  |  15 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  22 +-
 .../resources/hornetq/server0/jndi.properties   |   2 -
 .../resources/hornetq/server1/activemq-jms.xml  |  22 +-
 .../resources/hornetq/server1/jndi.properties   |   2 -
 examples/jms/jms-completion-listener/pom.xml    |   7 +-
 .../example/JMSCompletionListenerExample.java   |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/jms-context/pom.xml                |   7 +-
 .../activemq/jms/example/JMSContextExample.java |   4 +-
 examples/jms/jms-shared-consumer/pom.xml        |   7 +-
 .../jms/example/JMSSharedConsumerExample.java   |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/jmx/pom.xml                        |   7 +-
 .../apache/activemq/jms/example/JMXExample.java |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  12 +-
 examples/jms/large-message/pom.xml              |   7 +-
 .../jms/example/LargeMessageExample.java        |   8 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  14 +-
 examples/jms/last-value-queue/pom.xml           |   7 +-
 .../jms/example/LastValueQueueExample.java      |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  14 +-
 examples/jms/management-notifications/pom.xml   |   7 +-
 .../example/ManagementNotificationExample.java  |   6 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  18 +-
 examples/jms/management/pom.xml                 |   7 +-
 .../activemq/jms/example/ManagementExample.java |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  14 +-
 examples/jms/message-counters/pom.xml           |   7 +-
 .../jms/example/MessageCounterExample.java      |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  17 +-
 examples/jms/message-group/pom.xml              |   7 +-
 .../jms/example/MessageGroupExample.java        |   4 +-
 .../resources/hornetq/server0/hornetq-jms.xml   |  13 +-
 examples/jms/message-group2/pom.xml             |   7 +-
 .../jms/example/MessageGroup2Example.java       |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  14 +-
 examples/jms/message-priority/pom.xml           |   7 +-
 .../jms/example/MessagePriorityExample.java     |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/multiple-failover-failback/pom.xml |  11 +-
 .../MultipleFailoverFailbackExample.java        |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  27 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  26 +-
 .../resources/hornetq/server2/activemq-jms.xml  |  26 +-
 examples/jms/multiple-failover/pom.xml          |  11 +-
 .../jms/example/MultipleFailoverExample.java    |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  27 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  26 +-
 .../resources/hornetq/server2/activemq-jms.xml  |  26 +-
 examples/jms/no-consumer-buffering/pom.xml      |   7 +-
 .../jms/example/NoConsumerBufferingExample.java |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  18 +-
 examples/jms/non-transaction-failover/pom.xml   |   9 +-
 .../example/NonTransactionFailoverExample.java  |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  26 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  26 +-
 examples/jms/openwire/pom.xml                   |   7 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/paging/pom.xml                     |   7 +-
 .../activemq/jms/example/PagingExample.java     |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  17 +-
 examples/jms/perf/pom.xml                       |  10 -
 .../src/main/resources/client.jndi.properties   |   5 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  15 +-
 examples/jms/pre-acknowledge/pom.xml            |   7 +-
 .../jms/example/PreacknowledgeExample.java      |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/producer-rate-limit/pom.xml        |   7 +-
 .../jms/example/ProducerRateLimitExample.java   |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  18 +-
 examples/jms/proton-cpp/pom.xml                 |  10 -
 examples/jms/proton-j/pom.xml                   |   7 +-
 examples/jms/proton-ruby/pom.xml                |   5 -
 .../jms/queue-message-redistribution/pom.xml    |   9 +-
 .../QueueMessageRedistributionExample.java      |   6 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  13 +-
 examples/jms/queue-requestor/pom.xml            |   7 +-
 .../jms/example/QueueRequestorExample.java      |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/queue-selector/pom.xml             |   7 +-
 .../jms/example/QueueSelectorExample.java       |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/queue/pom.xml                      |   7 +-
 .../activemq/jms/example/QueueExample.java      |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/reattach-node/pom.xml              |   7 +-
 .../activemq/jms/example/ReattachExample.java   |   6 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  45 +-
 examples/jms/replicated-failback-static/pom.xml |   9 +-
 .../ReplicatedFailbackStaticExample.java        |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  27 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  26 +-
 examples/jms/replicated-failback/pom.xml        |   9 +-
 .../jms/example/ReplicatedFailbackExample.java  |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  27 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  26 +-
 .../jms/replicated-multiple-failover/pom.xml    |  11 +-
 .../ReplicatedMultipleFailoverExample.java      |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  27 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  26 +-
 .../resources/hornetq/server2/activemq-jms.xml  |  26 +-
 .../jms/replicated-transaction-failover/pom.xml |   9 +-
 .../ReplicatedTransactionFailoverExample.java   |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  25 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  25 +-
 examples/jms/request-reply/pom.xml              |   7 +-
 .../jms/example/RequestReplyExample.java        |   8 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 .../src/main/resources/activemq-jms.xml         |  13 +-
 .../src/main/resources/activemq-jms.xml         |  13 +-
 .../src/main/resources/activemq-jms.xml         |  13 +-
 .../push/src/main/resources/activemq-jms.xml    |  19 +-
 examples/jms/scale-down/pom.xml                 |   9 +-
 .../activemq/jms/example/ScaleDownExample.java  |   6 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  24 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  24 +-
 examples/jms/scheduled-message/pom.xml          |   7 +-
 .../jms/example/ScheduledMessageExample.java    |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/security/pom.xml                   |   7 +-
 .../activemq/jms/example/SecurityExample.java   |   8 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  23 +-
 examples/jms/send-acknowledgements/pom.xml      |   7 +-
 .../example/SendAcknowledgementsExample.java    |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  14 +-
 examples/jms/spring-integration/pom.xml         |   7 +-
 .../src/main/resources/activemq-jms.xml         |  13 +-
 examples/jms/ssl-enabled/pom.xml                |   7 +-
 .../apache/activemq/jms/example/SSLExample.java |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/static-selector-jms/pom.xml        |   7 +-
 .../jms/example/StaticSelectorJMSExample.java   |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  12 +-
 examples/jms/static-selector/pom.xml            |   7 +-
 .../jms/example/StaticSelectorExample.java      |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/stomp-websockets/pom.xml           |   7 +-
 .../jms/example/StompWebSocketExample.java      |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/stomp/pom.xml                      |   7 +-
 .../activemq/jms/example/StompExample.java      |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/stomp1.1/pom.xml                   |   7 +-
 .../activemq/jms/example/StompExample.java      |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/stomp1.2/pom.xml                   |   7 +-
 .../activemq/jms/example/StompExample.java      |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/stop-server-failover/pom.xml       |   9 +-
 .../jms/example/StopServerFailoverExample.java  |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  26 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  26 +-
 examples/jms/symmetric-cluster/pom.xml          |  17 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  17 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  17 +-
 .../resources/hornetq/server2/activemq-jms.xml  |  17 +-
 .../resources/hornetq/server3/activemq-jms.xml  |  17 +-
 .../resources/hornetq/server4/activemq-jms.xml  |  17 +-
 .../resources/hornetq/server5/activemq-jms.xml  |  17 +-
 examples/jms/temp-queue/pom.xml                 |   7 +-
 .../jms/example/TemporaryQueueExample.java      |   2 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/topic-hierarchies/pom.xml          |   7 +-
 .../jms/example/TopicHierarchyExample.java      |   2 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  33 +-
 examples/jms/topic-selector-example1/pom.xml    |   7 +-
 .../jms/example/TopicSelectorExample1.java      |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/topic-selector-example2/pom.xml    |   7 +-
 .../jms/example/TopicSelectorExample2.java      |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/topic/pom.xml                      |   7 +-
 .../activemq/jms/example/TopicExample.java      |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 .../hornetq/server0/client-jndi.properties      |   5 +-
 examples/jms/transaction-failover/pom.xml       |   9 +-
 .../jms/example/TransactionFailoverExample.java |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  25 +-
 .../resources/hornetq/server1/activemq-jms.xml  |  25 +-
 examples/jms/transactional/pom.xml              |   7 +-
 .../jms/example/TransactionalExample.java       |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  13 +-
 examples/jms/xa-heuristic/pom.xml               |   7 +-
 .../jms/example/XAHeuristicExample.java         |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  14 +-
 examples/jms/xa-receive/pom.xml                 |   7 +-
 .../activemq/jms/example/XAReceiveExample.java  |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  14 +-
 examples/jms/xa-send/pom.xml                    |   7 +-
 .../activemq/jms/example/XASendExample.java     |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  14 +-
 examples/jms/xa-with-jta/pom.xml                |   7 +-
 .../activemq/jms/example/XAwithJTAExample.java  |   4 +-
 .../resources/hornetq/server0/activemq-jms.xml  |  14 +-
 examples/soak/normal/pom.xml                    |  13 +-
 examples/soak/normal/server0/activemq-jms.xml   |  18 +-
 .../activemq/jms/soak/example/SoakReceiver.java |   5 +-
 .../activemq/jms/soak/example/SoakSender.java   |   5 +-
 pom.xml                                         |  11 -
 tests/byteman-tests/pom.xml                     |   4 -
 .../server-start-stop-backup-jms-config1.xml    |  11 +-
 .../server-start-stop-live-jms-config1.xml      |  13 +-
 tests/integration-tests/pom.xml                 |   7 +
 .../integration/jms/SimpleJNDIClientTest.java   | 722 +++++++++++++++++++
 .../jms/server/JMSServerDeployerTest.java       | 207 +-----
 .../config/JMSServerConfigParserTest.java       |  35 -
 .../integration/ra/ActiveMQRATestBase.java      |   9 +
 .../spring/SpringIntegrationTest.java           |  17 +-
 .../tests/util/NonSerializableFactory.java      |  84 ++-
 .../activemq-jms-for-JMSServerDeployerTest.xml  |  48 +-
 .../activemq-jms-for-JMSServerDeployerTest2.xml |  48 +-
 .../colocated-server-start-stop-jms-config1.xml |  13 +-
 .../colocated-server-start-stop-jms-config2.xml |  13 +-
 .../resources/server-start-stop-jms-config1.xml |  13 +-
 .../src/test/resources/spring-activemq-jms.xml  |  13 +-
 .../src/test/resources/spring-jms-beans.xml     |  21 +-
 tests/jms-tests/pom.xml                         |   4 -
 .../jms/tests/ActiveMQServerTestCase.java       |  14 +
 .../jms/tests/ConnectionFactoryTest.java        |  49 ++
 .../apache/activemq/jms/tests/SessionTest.java  |   2 +
 .../tests/message/SimpleJMSStreamMessage.java   |   4 +-
 .../jms/tests/tools/WrappedJNDIServer.java      |  92 ---
 .../jms/tests/tools/container/InVMContext.java  |   1 -
 .../container/InVMInitialContextFactory.java    |   2 -
 .../tests/tools/container/LocalTestServer.java  |  32 +-
 .../tools/container/NonSerializableFactory.java |  85 ++-
 .../jms/tests/tools/container/Server.java       |   6 +
 .../src/test/resources/activemq-jms.xml         | 120 ---
 .../src/test/resources/jndi.properties          |   3 +-
 tests/joram-tests/pom.xml                       |   4 -
 .../org/apache/activemq/jms/AbstractAdmin.java  |  13 +-
 .../org/apache/activemq/jms/ActiveMQAdmin.java  | 339 +++++++++
 .../org/apache/activemq/jms/ActiveMQQAdmin.java | 340 ---------
 .../apache/activemq/jms/SpawnedJMSServer.java   |  25 -
 .../jtests/jms/admin/AdminFactory.java          |   8 +-
 .../message/headers/MessageHeaderTest.java      |  10 +-
 .../jms/conform/queue/QueueBrowserTest.java     |   3 +-
 .../jms/conform/session/UnifiedSessionTest.java |   3 +-
 .../jtests/jms/framework/PTPTestCase.java       |  15 +-
 .../jtests/jms/framework/PubSubTestCase.java    |  15 +-
 .../jtests/jms/framework/UnifiedTestCase.java   |  17 +-
 .../src/test/resources/provider.properties      |   2 +-
 tests/performance-tests/pom.xml                 |   4 -
 tests/soak-tests/pom.xml                        |   4 -
 tests/stress-tests/pom.xml                      |   4 -
 tests/timing-tests/pom.xml                      |   4 -
 .../activemq/tests/unit/util/InVMContext.java   |   1 -
 .../tests/unit/util/InVMNamingContext.java      |   1 -
 .../tests/unit/util/NonSerializableFactory.java |  81 +--
 441 files changed, 3471 insertions(+), 6318 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-6/blob/e6a3d3a0/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 7af8f9f..015033e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -58,11 +58,6 @@ integration/activemq-*-integration/.project
 # /distribution/activemq/
 /distribution/activemq/.project
 
-# /distribution/jnp-client/
-/distribution/jnp-client/target
-/distribution/jnp-client/bin
-/distribution/jnp-client/.project
-
 # /docs/
 /docs/.project
 

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/e6a3d3a0/activemq-bootstrap/src/main/java/org/apache/activemq/cli/commands/Run.java
----------------------------------------------------------------------
diff --git a/activemq-bootstrap/src/main/java/org/apache/activemq/cli/commands/Run.java b/activemq-bootstrap/src/main/java/org/apache/activemq/cli/commands/Run.java
index 8bab07e..a83be75 100644
--- a/activemq-bootstrap/src/main/java/org/apache/activemq/cli/commands/Run.java
+++ b/activemq-bootstrap/src/main/java/org/apache/activemq/cli/commands/Run.java
@@ -34,7 +34,6 @@ import org.apache.activemq.integration.bootstrap.ActiveMQBootstrapLogger;
 import org.apache.activemq.jms.server.JMSServerManager;
 import org.apache.activemq.jms.server.config.JMSConfiguration;
 import org.apache.activemq.jms.server.impl.JMSServerManagerImpl;
-import org.apache.activemq.jms.server.impl.StandaloneNamingServer;
 import org.apache.activemq.spi.core.security.ActiveMQSecurityManager;
 
 import javax.management.MBeanServer;
@@ -51,7 +50,6 @@ public class Run implements Action
 
    @Arguments(description = "Broker Configuration URI, default 'xml:${ACTIVEMQ_HOME}/config/non-clustered/bootstrap.xml'")
    String configuration;
-   private StandaloneNamingServer namingServer;
    private JMSServerManager jmsServerManager;
    private ArrayList<ActiveMQComponent> components = new ArrayList<>();
 
@@ -84,20 +82,6 @@ public class Run implements Action
 
       ActiveMQServerImpl server = new ActiveMQServerImpl(core, mBeanServer, security);
 
-      namingServer = new StandaloneNamingServer(server);
-
-      namingServer.setBindAddress(broker.naming.bindAddress);
-
-      namingServer.setPort(broker.naming.port);
-
-      namingServer.setRmiBindAddress(broker.naming.rmiBindAddress);
-
-      namingServer.setRmiPort(broker.naming.rmiPort);
-
-      namingServer.start();
-
-      ActiveMQBootstrapLogger.LOGGER.startedNamingService(broker.naming.bindAddress, broker.naming.port, broker.naming.rmiBindAddress, broker.naming.rmiPort);
-
       if (jms != null)
       {
          jmsServerManager = new JMSServerManagerImpl(server, jms);

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/e6a3d3a0/activemq-dto/src/main/java/org/apache/activemq/dto/BrokerDTO.java
----------------------------------------------------------------------
diff --git a/activemq-dto/src/main/java/org/apache/activemq/dto/BrokerDTO.java b/activemq-dto/src/main/java/org/apache/activemq/dto/BrokerDTO.java
index 70e6767..c6f8974 100644
--- a/activemq-dto/src/main/java/org/apache/activemq/dto/BrokerDTO.java
+++ b/activemq-dto/src/main/java/org/apache/activemq/dto/BrokerDTO.java
@@ -40,9 +40,6 @@ public class BrokerDTO
    @XmlElementRef
    public SecurityDTO security;
 
-   @XmlElementRef
-   public NamingDTO naming;
-
    @XmlElementRef(required = false)
    public WebServerDTO web;
 

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/e6a3d3a0/activemq-dto/src/main/java/org/apache/activemq/dto/NamingDTO.java
----------------------------------------------------------------------
diff --git a/activemq-dto/src/main/java/org/apache/activemq/dto/NamingDTO.java b/activemq-dto/src/main/java/org/apache/activemq/dto/NamingDTO.java
deleted file mode 100644
index a2aa5b6..0000000
--- a/activemq-dto/src/main/java/org/apache/activemq/dto/NamingDTO.java
+++ /dev/null
@@ -1,39 +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.dto;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlRootElement;
-
-@XmlRootElement(name = "naming")
-@XmlAccessorType(XmlAccessType.FIELD)
-public class NamingDTO
-{
-   @XmlAttribute
-   public String bindAddress = "localhost";
-
-   @XmlAttribute
-   public int port = 1099;
-
-   @XmlAttribute
-   public String rmiBindAddress = "localhost";
-
-   @XmlAttribute
-   public int rmiPort = 1098;
-}

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/e6a3d3a0/activemq-dto/src/main/resources/org/apache/activemq/dto/jaxb.index
----------------------------------------------------------------------
diff --git a/activemq-dto/src/main/resources/org/apache/activemq/dto/jaxb.index b/activemq-dto/src/main/resources/org/apache/activemq/dto/jaxb.index
index d4f5b1f..9cffb01 100644
--- a/activemq-dto/src/main/resources/org/apache/activemq/dto/jaxb.index
+++ b/activemq-dto/src/main/resources/org/apache/activemq/dto/jaxb.index
@@ -19,5 +19,4 @@ CoreDTO
 JmsDTO
 SecurityDTO
 BasicSecurityDTO
-NamingDTO
 

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/e6a3d3a0/activemq-jms-client/src/main/java/org/apache/activemq/jndi/ActiveMQInitialContextFactory.java
----------------------------------------------------------------------
diff --git a/activemq-jms-client/src/main/java/org/apache/activemq/jndi/ActiveMQInitialContextFactory.java b/activemq-jms-client/src/main/java/org/apache/activemq/jndi/ActiveMQInitialContextFactory.java
new file mode 100644
index 0000000..18b145d
--- /dev/null
+++ b/activemq-jms-client/src/main/java/org/apache/activemq/jndi/ActiveMQInitialContextFactory.java
@@ -0,0 +1,496 @@
+/**
+ * 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.jndi;
+
+import javax.jms.Queue;
+import javax.jms.Topic;
+import javax.naming.Context;
+import javax.naming.NamingException;
+import javax.naming.spi.InitialContextFactory;
+import java.io.UnsupportedEncodingException;
+import java.lang.reflect.Method;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.StringTokenizer;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.apache.activemq.api.core.DiscoveryGroupConfiguration;
+import org.apache.activemq.api.core.JGroupsBroadcastGroupConfiguration;
+import org.apache.activemq.api.core.TransportConfiguration;
+import org.apache.activemq.api.core.UDPBroadcastGroupConfiguration;
+import org.apache.activemq.api.core.client.ActiveMQClient;
+import org.apache.activemq.api.jms.ActiveMQJMSClient;
+import org.apache.activemq.api.jms.JMSFactoryType;
+import org.apache.activemq.core.client.ActiveMQClientLogger;
+import org.apache.activemq.core.remoting.impl.netty.NettyConnectorFactory;
+import org.apache.activemq.core.remoting.impl.netty.TransportConstants;
+import org.apache.activemq.jms.client.ActiveMQConnectionFactory;
+
+/**
+ * A factory of the ActiveMQ InitialContext which contains
+ * {@link javax.jms.ConnectionFactory} instances as well as a child context called
+ * <i>destinations</i> which contain all of the current active destinations, in
+ * child context depending on the QoS such as transient or durable and queue or
+ * topic.
+ */
+public class ActiveMQInitialContextFactory implements InitialContextFactory
+{
+   public static final String CONNECTION_FACTORY_NAMES = "connectionFactoryNames";
+   public static final String REFRESH_TIMEOUT = "refresh-timeout";
+   public static final String DISCOVERY_INITIAL_WAIT_TIMEOUT = "discovery-initial-wait-timeout";
+
+   private static final String[] DEFAULT_CONNECTION_FACTORY_NAMES = {"ConnectionFactory", "XAConnectionFactory", "QueueConnectionFactory", "TopicConnectionFactory"};
+   public static final String TCP_SCHEME = "tcp";
+   public static final String JGROUPS_SCHEME = "jgroups";
+   public static final String UDP_SCHEME = "udp";
+   public static final String VM_SCHEME = "vm";
+   public static final String HA = "ha";
+   public static final String CF_TYPE = "type";
+   public static final String QUEUE_CF = "QUEUE_CF";
+   public static final String TOPIC_CF = "TOPIC_CF";
+   public static final String QUEUE_XA_CF = "QUEUE_XA_CF";
+   public static final String TOPIC_XA_CF = "TOPIC_XA_CF";
+   public static final String XA_CF = "XA_CF";
+   public static final String DYNAMIC_QUEUE_CONTEXT = "dynamicQueues";
+   public static final String DYNAMIC_TOPIC_CONTEXT = "dynamicTopics";
+
+   private String connectionPrefix = "connection.";
+   private String queuePrefix = "queue.";
+   private String topicPrefix = "topic.";
+
+   public Context getInitialContext(Hashtable environment) throws NamingException
+   {
+      // lets create a factory
+      Map<String, Object> data = new ConcurrentHashMap<String, Object>();
+      String[] names = getConnectionFactoryNames(environment);
+      for (int i = 0; i < names.length; i++)
+      {
+         ActiveMQConnectionFactory factory = null;
+         String name = names[i];
+
+         try
+         {
+            factory = createConnectionFactory(name, environment);
+         }
+         catch (Exception e)
+         {
+            e.printStackTrace();
+            throw new NamingException("Invalid broker URL");
+         }
+
+         data.put(name, factory);
+      }
+
+      createQueues(data, environment);
+      createTopics(data, environment);
+
+      data.put(DYNAMIC_QUEUE_CONTEXT, new LazyCreateContext()
+      {
+         private static final long serialVersionUID = 6503881346214855588L;
+
+         protected Object createEntry(String name)
+         {
+            return ActiveMQJMSClient.createQueue(name);
+         }
+      });
+      data.put(DYNAMIC_TOPIC_CONTEXT, new LazyCreateContext()
+      {
+         private static final long serialVersionUID = 2019166796234979615L;
+
+         protected Object createEntry(String name)
+         {
+            return ActiveMQJMSClient.createTopic(name);
+         }
+      });
+
+      return createContext(environment, data);
+   }
+
+   // Properties
+   // -------------------------------------------------------------------------
+   public String getTopicPrefix()
+   {
+      return topicPrefix;
+   }
+
+   public void setTopicPrefix(String topicPrefix)
+   {
+      this.topicPrefix = topicPrefix;
+   }
+
+   public String getQueuePrefix()
+   {
+      return queuePrefix;
+   }
+
+   public void setQueuePrefix(String queuePrefix)
+   {
+      this.queuePrefix = queuePrefix;
+   }
+
+   // Implementation methods
+   // -------------------------------------------------------------------------
+
+   protected ReadOnlyContext createContext(Hashtable environment, Map<String, Object> data)
+   {
+      return new ReadOnlyContext(environment, data);
+   }
+
+   protected ActiveMQConnectionFactory createConnectionFactory(String name, Hashtable environment) throws URISyntaxException, MalformedURLException
+   {
+      Hashtable connectionFactoryProperties = new Hashtable(environment);
+      if (DEFAULT_CONNECTION_FACTORY_NAMES[1].equals(name))
+      {
+         connectionFactoryProperties.put(CF_TYPE, XA_CF);
+      }
+      if (DEFAULT_CONNECTION_FACTORY_NAMES[2].equals(name))
+      {
+         connectionFactoryProperties.put(CF_TYPE, QUEUE_CF);
+      }
+      if (DEFAULT_CONNECTION_FACTORY_NAMES[3].equals(name))
+      {
+         connectionFactoryProperties.put(CF_TYPE, TOPIC_CF);
+      }
+      String prefix = connectionPrefix + name + ".";
+      for (Iterator iter = environment.entrySet().iterator(); iter.hasNext(); )
+      {
+         Map.Entry entry = (Map.Entry) iter.next();
+         String key = (String) entry.getKey();
+         if (key.startsWith(prefix))
+         {
+            // Rename the key...
+            connectionFactoryProperties.remove(key);
+            key = key.substring(prefix.length());
+            connectionFactoryProperties.put(key, entry.getValue());
+         }
+      }
+      return createConnectionFactory(connectionFactoryProperties);
+   }
+
+   protected String[] getConnectionFactoryNames(Map environment)
+   {
+      String factoryNames = (String) environment.get(CONNECTION_FACTORY_NAMES);
+      if (factoryNames != null)
+      {
+         List<String> list = new ArrayList<String>();
+         for (StringTokenizer enumeration = new StringTokenizer(factoryNames, ","); enumeration.hasMoreTokens(); )
+         {
+            list.add(enumeration.nextToken().trim());
+         }
+         int size = list.size();
+         if (size > 0)
+         {
+            String[] answer = new String[size];
+            list.toArray(answer);
+            return answer;
+         }
+      }
+      return DEFAULT_CONNECTION_FACTORY_NAMES;
+   }
+
+   protected void createQueues(Map<String, Object> data, Hashtable environment)
+   {
+      for (Iterator iter = environment.entrySet().iterator(); iter.hasNext(); )
+      {
+         Map.Entry entry = (Map.Entry) iter.next();
+         String key = entry.getKey().toString();
+         if (key.startsWith(queuePrefix))
+         {
+            String jndiName = key.substring(queuePrefix.length());
+            data.put(jndiName, createQueue(entry.getValue().toString()));
+         }
+      }
+   }
+
+   protected void createTopics(Map<String, Object> data, Hashtable environment)
+   {
+      for (Iterator iter = environment.entrySet().iterator(); iter.hasNext(); )
+      {
+         Map.Entry entry = (Map.Entry) iter.next();
+         String key = entry.getKey().toString();
+         if (key.startsWith(topicPrefix))
+         {
+            String jndiName = key.substring(topicPrefix.length());
+            data.put(jndiName, createTopic(entry.getValue().toString()));
+         }
+      }
+   }
+
+   /**
+    * Factory method to create new Queue instances
+    */
+   protected Queue createQueue(String name)
+   {
+      return ActiveMQJMSClient.createQueue(name);
+   }
+
+   /**
+    * Factory method to create new Topic instances
+    */
+   protected Topic createTopic(String name)
+   {
+      return ActiveMQJMSClient.createTopic(name);
+   }
+
+   /**
+    * Factory method to create a new connection factory from the given environment
+    */
+   protected ActiveMQConnectionFactory createConnectionFactory(Hashtable environment) throws URISyntaxException, MalformedURLException
+   {
+      ActiveMQConnectionFactory connectionFactory;
+      Map transportConfig = new HashMap();
+
+      if (environment.containsKey(Context.PROVIDER_URL))
+      {
+         URI providerURI = new URI(((String)environment.get(Context.PROVIDER_URL)));
+
+         if (providerURI.getQuery() != null)
+         {
+            try
+            {
+               transportConfig = parseQuery(providerURI.getQuery());
+            }
+            catch (URISyntaxException e)
+            {
+            }
+         }
+
+         if (providerURI.getScheme().equals(TCP_SCHEME))
+         {
+            String[] connectors = providerURI.getAuthority().split(",");
+            TransportConfiguration[] transportConfigurations = new TransportConfiguration[connectors.length];
+            for (int i = 0; i < connectors.length; i++)
+            {
+               Map individualTransportConfig = new HashMap(transportConfig);
+               String[] hostAndPort = connectors[i].split(":");
+               individualTransportConfig.put(TransportConstants.HOST_PROP_NAME, hostAndPort[0]);
+               individualTransportConfig.put(TransportConstants.PORT_PROP_NAME, hostAndPort[1]);
+               transportConfigurations[i] = new TransportConfiguration(NettyConnectorFactory.class.getCanonicalName(), individualTransportConfig);
+            }
+
+            if (Boolean.TRUE.equals(environment.get(HA)))
+            {
+               connectionFactory = ActiveMQJMSClient.createConnectionFactoryWithHA(getJmsFactoryType(environment), transportConfigurations);
+            }
+            else
+            {
+               connectionFactory = ActiveMQJMSClient.createConnectionFactoryWithoutHA(getJmsFactoryType(environment), transportConfigurations);
+            }
+         }
+         else if (providerURI.getScheme().equals(UDP_SCHEME))
+         {
+            DiscoveryGroupConfiguration dgc = new DiscoveryGroupConfiguration()
+               .setRefreshTimeout(transportConfig.containsKey(REFRESH_TIMEOUT) ? Long.parseLong((String) transportConfig.get(REFRESH_TIMEOUT)) : ActiveMQClient.DEFAULT_DISCOVERY_REFRESH_TIMEOUT)
+               .setDiscoveryInitialWaitTimeout(transportConfig.containsKey(DISCOVERY_INITIAL_WAIT_TIMEOUT) ? Long.parseLong((String) transportConfig.get(DISCOVERY_INITIAL_WAIT_TIMEOUT)) : ActiveMQClient.DEFAULT_DISCOVERY_INITIAL_WAIT_TIMEOUT)
+               .setBroadcastEndpointFactoryConfiguration(new UDPBroadcastGroupConfiguration()
+                                                            .setGroupAddress(providerURI.getHost())
+                                                            .setGroupPort(providerURI.getPort())
+                                                            .setLocalBindAddress(transportConfig.containsKey(TransportConstants.LOCAL_ADDRESS_PROP_NAME) ? (String) transportConfig.get(TransportConstants.LOCAL_ADDRESS_PROP_NAME) : null)
+                                                            .setLocalBindPort(transportConfig.containsKey(TransportConstants.LOCAL_PORT_PROP_NAME) ? Integer.parseInt((String) transportConfig.get(TransportConstants.LOCAL_PORT_PROP_NAME)) : -1));
+            if (Boolean.TRUE.equals(environment.get(HA)))
+            {
+               connectionFactory = ActiveMQJMSClient.createConnectionFactoryWithHA(dgc, getJmsFactoryType(environment));
+            }
+            else
+            {
+               connectionFactory = ActiveMQJMSClient.createConnectionFactoryWithoutHA(dgc, getJmsFactoryType(environment));
+            }
+         }
+         else if (providerURI.getScheme().equals(JGROUPS_SCHEME))
+         {
+            JGroupsBroadcastGroupConfiguration config = new JGroupsBroadcastGroupConfiguration(providerURI.getAuthority(), providerURI.getPath() != null ? providerURI.getPath() : UUID.randomUUID().toString());
+
+            DiscoveryGroupConfiguration dgc = new DiscoveryGroupConfiguration()
+               .setRefreshTimeout(transportConfig.containsKey(REFRESH_TIMEOUT) ? Long.parseLong((String) transportConfig.get(REFRESH_TIMEOUT)) : ActiveMQClient.DEFAULT_DISCOVERY_REFRESH_TIMEOUT)
+               .setDiscoveryInitialWaitTimeout(transportConfig.containsKey(DISCOVERY_INITIAL_WAIT_TIMEOUT) ? Long.parseLong((String) transportConfig.get(DISCOVERY_INITIAL_WAIT_TIMEOUT)) : ActiveMQClient.DEFAULT_DISCOVERY_INITIAL_WAIT_TIMEOUT)
+               .setBroadcastEndpointFactoryConfiguration(config);
+            if (Boolean.TRUE.equals(environment.get(HA)))
+            {
+               connectionFactory = ActiveMQJMSClient.createConnectionFactoryWithHA(dgc, getJmsFactoryType(environment));
+            }
+            else
+            {
+               connectionFactory = ActiveMQJMSClient.createConnectionFactoryWithoutHA(dgc, getJmsFactoryType(environment));
+            }
+         }
+         else if (providerURI.getScheme().equals(VM_SCHEME))
+         {
+            Map inVmTransportConfig = new HashMap();
+            inVmTransportConfig.put("server-id", providerURI.getHost());
+            TransportConfiguration tc = new TransportConfiguration("org.apache.activemq.core.remoting.impl.invm.InVMConnectorFactory", inVmTransportConfig);
+            connectionFactory = ActiveMQJMSClient.createConnectionFactoryWithoutHA(getJmsFactoryType(environment), tc);
+         }
+         else
+         {
+            throw new IllegalArgumentException("Invalid scheme");
+         }
+      }
+      else
+      {
+         TransportConfiguration tc = new TransportConfiguration("org.apache.activemq.core.remoting.impl.invm.InVMConnectorFactory");
+         connectionFactory = ActiveMQJMSClient.createConnectionFactoryWithoutHA(getJmsFactoryType(environment), tc);
+      }
+
+      Properties properties = new Properties();
+      properties.putAll(environment);
+
+      for (Object key : environment.keySet())
+      {
+         invokeSetter(connectionFactory, (String) key, environment.get(key));
+      }
+
+      return connectionFactory;
+   }
+
+   private JMSFactoryType getJmsFactoryType(Hashtable environment)
+   {
+      JMSFactoryType ultimateType = JMSFactoryType.CF; // default value
+      if (environment.containsKey(CF_TYPE))
+      {
+         String tempType = (String) environment.get(CF_TYPE);
+         if (QUEUE_CF.equals(tempType))
+         {
+            ultimateType = JMSFactoryType.QUEUE_CF;
+         }
+         else if (TOPIC_CF.equals(tempType))
+         {
+            ultimateType = JMSFactoryType.TOPIC_CF;
+         }
+         else if (QUEUE_XA_CF.equals(tempType))
+         {
+            ultimateType = JMSFactoryType.QUEUE_XA_CF;
+         }
+         else if (TOPIC_XA_CF.equals(tempType))
+         {
+            ultimateType = JMSFactoryType.TOPIC_XA_CF;
+         }
+         else if (XA_CF.equals(tempType))
+         {
+            ultimateType = JMSFactoryType.XA_CF;
+         }
+      }
+      return ultimateType;
+   }
+
+
+   public static Map<String, String> parseQuery(String uri) throws URISyntaxException
+   {
+      try
+      {
+         uri = uri.substring(uri.lastIndexOf("?") + 1); // get only the relevant part of the query
+         Map<String, String> rc = new HashMap<String, String>();
+         if (uri != null && !uri.isEmpty())
+         {
+            String[] parameters = uri.split("&");
+            for (int i = 0; i < parameters.length; i++)
+            {
+               int p = parameters[i].indexOf("=");
+               if (p >= 0)
+               {
+                  String name = URLDecoder.decode(parameters[i].substring(0, p), "UTF-8");
+                  String value = URLDecoder.decode(parameters[i].substring(p + 1), "UTF-8");
+                  rc.put(name, value);
+               }
+               else
+               {
+                  rc.put(parameters[i], null);
+               }
+            }
+         }
+         return rc;
+      }
+      catch (UnsupportedEncodingException e)
+      {
+         throw (URISyntaxException) new URISyntaxException(e.toString(), "Invalid encoding").initCause(e);
+      }
+   }
+
+   public String getConnectionPrefix()
+   {
+      return connectionPrefix;
+   }
+
+   public void setConnectionPrefix(String connectionPrefix)
+   {
+      this.connectionPrefix = connectionPrefix;
+   }
+
+   private void invokeSetter(Object target, final String propertyName, final Object propertyValue)
+   {
+      Method setter = null;
+
+      Method[] methods = target.getClass().getMethods();
+
+      // turn something like "consumerWindowSize" to "setConsumerWindowSize"
+      String setterMethodName = "set" + Character.toUpperCase(propertyName.charAt(0)) + propertyName.substring(1);
+
+      for (Method m : methods)
+      {
+         if (m.getName().equals(setterMethodName))
+         {
+            setter = m;
+            break;
+         }
+      }
+
+      try
+      {
+         if (setter != null)
+         {
+            ActiveMQClientLogger.LOGGER.info("Invoking: " + setter + " that takes a " + setter.getParameterTypes()[0] + " with a " + propertyValue.getClass());
+            if (propertyValue.getClass() == String.class && setter.getParameterTypes()[0] != String.class)
+            {
+               String stringPropertyValue = (String) propertyValue;
+               if (setter.getParameterTypes()[0] == Integer.TYPE)
+               {
+                  setter.invoke(target, Integer.parseInt(stringPropertyValue));
+               }
+               else if (setter.getParameterTypes()[0] == Long.TYPE)
+               {
+                  setter.invoke(target, Long.parseLong(stringPropertyValue));
+               }
+               else if (setter.getParameterTypes()[0] == Double.TYPE)
+               {
+                  setter.invoke(target, Double.parseDouble(stringPropertyValue));
+               }
+               else if (setter.getParameterTypes()[0] == Boolean.TYPE)
+               {
+                  setter.invoke(target, Boolean.parseBoolean(stringPropertyValue));
+               }
+            }
+            else
+            {
+               setter.invoke(target, propertyValue);
+            }
+         }
+      }
+      catch (Exception e)
+      {
+         ActiveMQClientLogger.LOGGER.warn("Caught exception during invocation of: " + setter, e);
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/e6a3d3a0/activemq-jms-client/src/main/java/org/apache/activemq/jndi/LazyCreateContext.java
----------------------------------------------------------------------
diff --git a/activemq-jms-client/src/main/java/org/apache/activemq/jndi/LazyCreateContext.java b/activemq-jms-client/src/main/java/org/apache/activemq/jndi/LazyCreateContext.java
new file mode 100644
index 0000000..0fe51bc
--- /dev/null
+++ b/activemq-jms-client/src/main/java/org/apache/activemq/jndi/LazyCreateContext.java
@@ -0,0 +1,43 @@
+/**
+ * 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.jndi;
+
+import javax.naming.NameNotFoundException;
+import javax.naming.NamingException;
+
+public abstract class LazyCreateContext extends ReadOnlyContext
+{
+   public Object lookup(String name) throws NamingException
+   {
+      try
+      {
+         return super.lookup(name);
+      }
+      catch (NameNotFoundException e)
+      {
+         Object answer = createEntry(name);
+         if (answer == null)
+         {
+            throw e;
+         }
+         internalBind(name, answer);
+         return answer;
+      }
+   }
+
+   protected abstract Object createEntry(String name);
+}

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/e6a3d3a0/activemq-jms-client/src/main/java/org/apache/activemq/jndi/NameParserImpl.java
----------------------------------------------------------------------
diff --git a/activemq-jms-client/src/main/java/org/apache/activemq/jndi/NameParserImpl.java b/activemq-jms-client/src/main/java/org/apache/activemq/jndi/NameParserImpl.java
new file mode 100644
index 0000000..8ae21cf
--- /dev/null
+++ b/activemq-jms-client/src/main/java/org/apache/activemq/jndi/NameParserImpl.java
@@ -0,0 +1,30 @@
+/**
+ * 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.jndi;
+
+import javax.naming.CompositeName;
+import javax.naming.Name;
+import javax.naming.NameParser;
+import javax.naming.NamingException;
+
+public class NameParserImpl implements NameParser
+{
+   public Name parse(String name) throws NamingException
+   {
+      return new CompositeName(name);
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/e6a3d3a0/activemq-jms-client/src/main/java/org/apache/activemq/jndi/ReadOnlyContext.java
----------------------------------------------------------------------
diff --git a/activemq-jms-client/src/main/java/org/apache/activemq/jndi/ReadOnlyContext.java b/activemq-jms-client/src/main/java/org/apache/activemq/jndi/ReadOnlyContext.java
new file mode 100644
index 0000000..9602d1a
--- /dev/null
+++ b/activemq-jms-client/src/main/java/org/apache/activemq/jndi/ReadOnlyContext.java
@@ -0,0 +1,534 @@
+/**
+ * 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.jndi;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Map;
+import javax.naming.Binding;
+import javax.naming.CompositeName;
+import javax.naming.Context;
+import javax.naming.LinkRef;
+import javax.naming.Name;
+import javax.naming.NameClassPair;
+import javax.naming.NameNotFoundException;
+import javax.naming.NameParser;
+import javax.naming.NamingEnumeration;
+import javax.naming.NamingException;
+import javax.naming.NotContextException;
+import javax.naming.OperationNotSupportedException;
+import javax.naming.Reference;
+import javax.naming.spi.NamingManager;
+
+import org.apache.activemq.core.client.ActiveMQClientLogger;
+
+/**
+ * A read-only Context <p/> This version assumes it and all its subcontext are
+ * read-only and any attempt to modify (e.g. through bind) will result in an
+ * OperationNotSupportedException. Each Context in the tree builds a cache of
+ * the entries in all sub-contexts to optimise the performance of lookup.
+ * </p>
+ * <p>
+ * This implementation is intended to optimise the performance of lookup(String)
+ * to about the level of a HashMap get. It has been observed that the scheme
+ * resolution phase performed by the JVM takes considerably longer, so for
+ * optimum performance lookups should be coded like:
+ * </p>
+ * <code>
+ * Context componentContext = (Context)new InitialContext().lookup("java:comp");
+ * String envEntry = (String) componentContext.lookup("env/myEntry");
+ * String envEntry2 = (String) componentContext.lookup("env/myEntry2");
+ * </code>
+ */
+@SuppressWarnings("unchecked")
+public class ReadOnlyContext implements Context, Serializable
+{
+   public static final String SEPARATOR = "/";
+   protected static final NameParser NAME_PARSER = new NameParserImpl();
+   private static final long serialVersionUID = -5754338187296859149L;
+
+   protected final Hashtable<String, Object> environment; // environment for this context
+   protected final Map<String, Object> bindings; // bindings at my level
+   protected final Map<String, Object> treeBindings; // all bindings under me
+
+   private boolean frozen;
+   private String nameInNamespace = "";
+
+   public ReadOnlyContext()
+   {
+      environment = new Hashtable<String, Object>();
+      bindings = new HashMap<String, Object>();
+      treeBindings = new HashMap<String, Object>();
+   }
+
+   public ReadOnlyContext(Hashtable env)
+   {
+      if (env == null)
+      {
+         this.environment = new Hashtable<String, Object>();
+      }
+      else
+      {
+         this.environment = new Hashtable<String, Object>(env);
+      }
+      this.bindings = Collections.EMPTY_MAP;
+      this.treeBindings = Collections.EMPTY_MAP;
+   }
+
+   public ReadOnlyContext(Hashtable environment, Map<String, Object> bindings)
+   {
+      if (environment == null)
+      {
+         this.environment = new Hashtable<String, Object>();
+      }
+      else
+      {
+         this.environment = new Hashtable<String, Object>(environment);
+      }
+      this.bindings = new HashMap<String, Object>();
+      treeBindings = new HashMap<String, Object>();
+      if (bindings != null)
+      {
+         for (Map.Entry<String, Object> binding : bindings.entrySet())
+         {
+            try
+            {
+               internalBind(binding.getKey(), binding.getValue());
+            }
+            catch (Throwable e)
+            {
+               ActiveMQClientLogger.LOGGER.error("Failed to bind " + binding.getKey() + "=" + binding.getValue(), e);
+            }
+         }
+      }
+      frozen = true;
+   }
+
+   public ReadOnlyContext(Hashtable environment, Map bindings, String nameInNamespace)
+   {
+      this(environment, bindings);
+      this.nameInNamespace = nameInNamespace;
+   }
+
+   protected ReadOnlyContext(ReadOnlyContext clone, Hashtable env)
+   {
+      this.bindings = clone.bindings;
+      this.treeBindings = clone.treeBindings;
+      this.environment = new Hashtable<String, Object>(env);
+   }
+
+   protected ReadOnlyContext(ReadOnlyContext clone, Hashtable<String, Object> env, String nameInNamespace)
+   {
+      this(clone, env);
+      this.nameInNamespace = nameInNamespace;
+   }
+
+   public void freeze()
+   {
+      frozen = true;
+   }
+
+   boolean isFrozen()
+   {
+      return frozen;
+   }
+
+   /**
+    * internalBind is intended for use only during setup or possibly by
+    * suitably synchronized superclasses. It binds every possible lookup into a
+    * map in each context. To do this, each context strips off one name segment
+    * and if necessary creates a new context for it. Then it asks that context
+    * to bind the remaining name. It returns a map containing all the bindings
+    * from the next context, plus the context it just created (if it in fact
+    * created it). (the names are suitably extended by the segment originally
+    * lopped off).
+    *
+    * @param name
+    * @param value
+    * @return
+    * @throws javax.naming.NamingException
+    */
+   protected Map<String, Object> internalBind(String name, Object value) throws NamingException
+   {
+      assert name != null && name.length() > 0;
+      assert !frozen;
+
+      Map<String, Object> newBindings = new HashMap<String, Object>();
+      int pos = name.indexOf('/');
+      if (pos == -1)
+      {
+         if (treeBindings.put(name, value) != null)
+         {
+            throw new NamingException("Something already bound at " + name);
+         }
+         bindings.put(name, value);
+         newBindings.put(name, value);
+      }
+      else
+      {
+         String segment = name.substring(0, pos);
+         assert segment != null;
+         assert !segment.equals("");
+         Object o = treeBindings.get(segment);
+         if (o == null)
+         {
+            o = newContext();
+            treeBindings.put(segment, o);
+            bindings.put(segment, o);
+            newBindings.put(segment, o);
+         }
+         else if (!(o instanceof ReadOnlyContext))
+         {
+            throw new NamingException("Something already bound where a subcontext should go");
+         }
+         ReadOnlyContext readOnlyContext = (ReadOnlyContext) o;
+         String remainder = name.substring(pos + 1);
+         Map<String, Object> subBindings = readOnlyContext.internalBind(remainder, value);
+         for (Iterator iterator = subBindings.entrySet().iterator(); iterator.hasNext(); )
+         {
+            Map.Entry entry = (Map.Entry) iterator.next();
+            String subName = segment + "/" + (String) entry.getKey();
+            Object bound = entry.getValue();
+            treeBindings.put(subName, bound);
+            newBindings.put(subName, bound);
+         }
+      }
+      return newBindings;
+   }
+
+   protected ReadOnlyContext newContext()
+   {
+      return new ReadOnlyContext();
+   }
+
+   public Object addToEnvironment(String propName, Object propVal) throws NamingException
+   {
+      return environment.put(propName, propVal);
+   }
+
+   public Hashtable<String, Object> getEnvironment() throws NamingException
+   {
+      return (Hashtable<String, Object>) environment.clone();
+   }
+
+   public Object removeFromEnvironment(String propName) throws NamingException
+   {
+      return environment.remove(propName);
+   }
+
+   public Object lookup(String name) throws NamingException
+   {
+      if (name.length() == 0)
+      {
+         return this;
+      }
+      Object result = treeBindings.get(name);
+      if (result == null)
+      {
+         result = bindings.get(name);
+      }
+      if (result == null)
+      {
+         int pos = name.indexOf(':');
+         if (pos > 0)
+         {
+            String scheme = name.substring(0, pos);
+            Context ctx = NamingManager.getURLContext(scheme, environment);
+            if (ctx == null)
+            {
+               throw new NamingException("scheme " + scheme + " not recognized");
+            }
+            return ctx.lookup(name);
+         }
+         else
+         {
+            // Split out the first name of the path
+            // and look for it in the bindings map.
+            CompositeName path = new CompositeName(name);
+
+            if (path.size() == 0)
+            {
+               return this;
+            }
+            else
+            {
+               String first = path.get(0);
+               Object obj = bindings.get(first);
+               if (obj == null)
+               {
+                  throw new NameNotFoundException(name);
+               }
+               else if (obj instanceof Context && path.size() > 1)
+               {
+                  Context subContext = (Context) obj;
+                  obj = subContext.lookup(path.getSuffix(1));
+               }
+               return obj;
+            }
+         }
+      }
+      if (result instanceof LinkRef)
+      {
+         LinkRef ref = (LinkRef) result;
+         result = lookup(ref.getLinkName());
+      }
+      if (result instanceof Reference)
+      {
+         try
+         {
+            result = NamingManager.getObjectInstance(result, null, null, this.environment);
+         }
+         catch (NamingException e)
+         {
+            throw e;
+         }
+         catch (Exception e)
+         {
+            throw (NamingException) new NamingException("could not look up : " + name).initCause(e);
+         }
+      }
+      if (result instanceof ReadOnlyContext)
+      {
+         String prefix = getNameInNamespace();
+         if (prefix.length() > 0)
+         {
+            prefix = prefix + SEPARATOR;
+         }
+         result = new ReadOnlyContext((ReadOnlyContext) result, environment, prefix + name);
+      }
+      return result;
+   }
+
+   public Object lookup(Name name) throws NamingException
+   {
+      return lookup(name.toString());
+   }
+
+   public Object lookupLink(String name) throws NamingException
+   {
+      return lookup(name);
+   }
+
+   public Name composeName(Name name, Name prefix) throws NamingException
+   {
+      Name result = (Name) prefix.clone();
+      result.addAll(name);
+      return result;
+   }
+
+   public String composeName(String name, String prefix) throws NamingException
+   {
+      CompositeName result = new CompositeName(prefix);
+      result.addAll(new CompositeName(name));
+      return result.toString();
+   }
+
+   public NamingEnumeration list(String name) throws NamingException
+   {
+      Object o = lookup(name);
+      if (o == this)
+      {
+         return new ListEnumeration();
+      }
+      else if (o instanceof Context)
+      {
+         return ((Context) o).list("");
+      }
+      else
+      {
+         throw new NotContextException();
+      }
+   }
+
+   public NamingEnumeration listBindings(String name) throws NamingException
+   {
+      Object o = lookup(name);
+      if (o == this)
+      {
+         return new ListBindingEnumeration();
+      }
+      else if (o instanceof Context)
+      {
+         return ((Context) o).listBindings("");
+      }
+      else
+      {
+         throw new NotContextException();
+      }
+   }
+
+   public Object lookupLink(Name name) throws NamingException
+   {
+      return lookupLink(name.toString());
+   }
+
+   public NamingEnumeration list(Name name) throws NamingException
+   {
+      return list(name.toString());
+   }
+
+   public NamingEnumeration listBindings(Name name) throws NamingException
+   {
+      return listBindings(name.toString());
+   }
+
+   public void bind(Name name, Object obj) throws NamingException
+   {
+      throw new OperationNotSupportedException();
+   }
+
+   public void bind(String name, Object obj) throws NamingException
+   {
+      throw new OperationNotSupportedException();
+   }
+
+   public void close() throws NamingException
+   {
+      // ignore
+   }
+
+   public Context createSubcontext(Name name) throws NamingException
+   {
+      throw new OperationNotSupportedException();
+   }
+
+   public Context createSubcontext(String name) throws NamingException
+   {
+      throw new OperationNotSupportedException();
+   }
+
+   public void destroySubcontext(Name name) throws NamingException
+   {
+      throw new OperationNotSupportedException();
+   }
+
+   public void destroySubcontext(String name) throws NamingException
+   {
+      throw new OperationNotSupportedException();
+   }
+
+   public String getNameInNamespace() throws NamingException
+   {
+      return nameInNamespace;
+   }
+
+   public NameParser getNameParser(Name name) throws NamingException
+   {
+      return NAME_PARSER;
+   }
+
+   public NameParser getNameParser(String name) throws NamingException
+   {
+      return NAME_PARSER;
+   }
+
+   public void rebind(Name name, Object obj) throws NamingException
+   {
+      throw new OperationNotSupportedException();
+   }
+
+   public void rebind(String name, Object obj) throws NamingException
+   {
+      throw new OperationNotSupportedException();
+   }
+
+   public void rename(Name oldName, Name newName) throws NamingException
+   {
+      throw new OperationNotSupportedException();
+   }
+
+   public void rename(String oldName, String newName) throws NamingException
+   {
+      throw new OperationNotSupportedException();
+   }
+
+   public void unbind(Name name) throws NamingException
+   {
+      throw new OperationNotSupportedException();
+   }
+
+   public void unbind(String name) throws NamingException
+   {
+      throw new OperationNotSupportedException();
+   }
+
+   private abstract class LocalNamingEnumeration implements NamingEnumeration
+   {
+      private final Iterator i = bindings.entrySet()
+         .iterator();
+
+      public boolean hasMore() throws NamingException
+      {
+         return i.hasNext();
+      }
+
+      public boolean hasMoreElements()
+      {
+         return i.hasNext();
+      }
+
+      protected Map.Entry getNext()
+      {
+         return (Map.Entry) i.next();
+      }
+
+      public void close() throws NamingException
+      {
+      }
+   }
+
+   private class ListEnumeration extends LocalNamingEnumeration
+   {
+      ListEnumeration()
+      {
+      }
+
+      public Object next() throws NamingException
+      {
+         return nextElement();
+      }
+
+      public Object nextElement()
+      {
+         Map.Entry entry = getNext();
+         return new NameClassPair((String) entry.getKey(), entry.getValue()
+            .getClass()
+            .getName());
+      }
+   }
+
+   private class ListBindingEnumeration extends LocalNamingEnumeration
+   {
+      ListBindingEnumeration()
+      {
+      }
+
+      public Object next() throws NamingException
+      {
+         return nextElement();
+      }
+
+      public Object nextElement()
+      {
+         Map.Entry entry = getNext();
+         return new Binding((String) entry.getKey(), entry.getValue());
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/e6a3d3a0/activemq-jms-server/pom.xml
----------------------------------------------------------------------
diff --git a/activemq-jms-server/pom.xml b/activemq-jms-server/pom.xml
index 476914b..c39a31e 100644
--- a/activemq-jms-server/pom.xml
+++ b/activemq-jms-server/pom.xml
@@ -53,10 +53,6 @@
          <groupId>org.jboss</groupId>
          <artifactId>jboss-transaction-spi</artifactId>
       </dependency>
-      <dependency>
-         <groupId>org.jboss.naming</groupId>
-         <artifactId>jnpserver</artifactId>
-      </dependency>
    </dependencies>
 
    <profiles>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/e6a3d3a0/activemq-jms-server/src/main/java/org/apache/activemq/jms/server/JMSServerConfigParser.java
----------------------------------------------------------------------
diff --git a/activemq-jms-server/src/main/java/org/apache/activemq/jms/server/JMSServerConfigParser.java b/activemq-jms-server/src/main/java/org/apache/activemq/jms/server/JMSServerConfigParser.java
index 3b6bca8..67d7ef6 100644
--- a/activemq-jms-server/src/main/java/org/apache/activemq/jms/server/JMSServerConfigParser.java
+++ b/activemq-jms-server/src/main/java/org/apache/activemq/jms/server/JMSServerConfigParser.java
@@ -18,7 +18,6 @@ package org.apache.activemq.jms.server;
 
 import java.io.InputStream;
 
-import org.apache.activemq.jms.server.config.ConnectionFactoryConfiguration;
 import org.apache.activemq.jms.server.config.JMSConfiguration;
 import org.apache.activemq.jms.server.config.JMSQueueConfiguration;
 import org.apache.activemq.jms.server.config.TopicConfiguration;
@@ -58,12 +57,4 @@ public interface JMSServerConfigParser
     * @throws Exception
     */
    JMSQueueConfiguration parseQueueConfiguration(final Node node) throws Exception;
-
-   /**
-    * Parse the Connection Configuration node as a ConnectionFactoryConfiguration object
-    * @param node
-    * @return
-    * @throws Exception
-    */
-   ConnectionFactoryConfiguration parseConnectionFactoryConfiguration(final Node node) throws Exception;
 }

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/e6a3d3a0/activemq-jms-server/src/main/java/org/apache/activemq/jms/server/embedded/EmbeddedJMS.java
----------------------------------------------------------------------
diff --git a/activemq-jms-server/src/main/java/org/apache/activemq/jms/server/embedded/EmbeddedJMS.java b/activemq-jms-server/src/main/java/org/apache/activemq/jms/server/embedded/EmbeddedJMS.java
index 376e4ce..e2d5550 100644
--- a/activemq-jms-server/src/main/java/org/apache/activemq/jms/server/embedded/EmbeddedJMS.java
+++ b/activemq-jms-server/src/main/java/org/apache/activemq/jms/server/embedded/EmbeddedJMS.java
@@ -21,6 +21,7 @@ import javax.naming.Context;
 import org.apache.activemq.core.registry.JndiBindingRegistry;
 import org.apache.activemq.core.registry.MapBindingRegistry;
 import org.apache.activemq.core.server.embedded.EmbeddedActiveMQ;
+import org.apache.activemq.jms.server.JMSServerManager;
 import org.apache.activemq.jms.server.config.JMSConfiguration;
 import org.apache.activemq.jms.server.impl.JMSServerManagerImpl;
 import org.apache.activemq.spi.core.naming.BindingRegistry;
@@ -58,6 +59,11 @@ public class EmbeddedJMS extends EmbeddedActiveMQ
       return registry;
    }
 
+   public JMSServerManager getJMSServerManager()
+   {
+      return serverManager;
+   }
+
    /**
     * Only set this property if you are using a custom BindingRegistry
     *