diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionFactory.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionFactory.java index a0d036c0ffe..df4611e442f 100644 --- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionFactory.java +++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQConnectionFactory.java @@ -67,6 +67,14 @@ public class ActiveMQConnectionFactory extends JNDIStorable implements Connectio private static final long serialVersionUID = 6730844785641767519L; + public ServerLocator setUseTopologyForLoadBalancing(boolean useTopologyForLoadBalancing) { + return serverLocator.setUseTopologyForLoadBalancing(useTopologyForLoadBalancing); + } + + public boolean getUseTopologyForLoadBalancing() { + return serverLocator.getUseTopologyForLoadBalancing(); + } + private ServerLocator serverLocator; private String clientID; diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/AbstractCFSchema.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/AbstractCFSchema.java index 9b407dbed8b..54bd574e992 100644 --- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/AbstractCFSchema.java +++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/AbstractCFSchema.java @@ -36,4 +36,13 @@ protected JMSConnectionOptions newConectionOptions(URI uri, Map return BeanSupport.setData(uri, new JMSConnectionOptions(), query); } + + protected ActiveMQConnectionFactory setData(URI uri, + Map query, + ActiveMQConnectionFactory factory) throws Exception { + BeanSupport.setData(uri, factory.getServerLocator(), query); + return BeanSupport.setData(uri, factory, query); + } + + } diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/InVMSchema.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/InVMSchema.java index 73e826a7cc9..15a5ce2f340 100644 --- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/InVMSchema.java +++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/InVMSchema.java @@ -39,7 +39,9 @@ protected ActiveMQConnectionFactory internalNewObject(URI uri, String name) throws Exception { JMSConnectionOptions options = newConectionOptions(uri, query); ActiveMQConnectionFactory factory = ActiveMQJMSClient.createConnectionFactoryWithoutHA(options.getFactoryTypeEnum(), InVMTransportConfigurationSchema.createTransportConfiguration(uri, query, name, "org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnectorFactory")); - return BeanSupport.setData(uri, factory, query); + BeanSupport.setData(uri, factory, query); + BeanSupport.setData(uri, factory.getServerLocator(), query); + return factory; } @Override diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/JGroupsSchema.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/JGroupsSchema.java index 2d820188449..653d6e18ed3 100644 --- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/JGroupsSchema.java +++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/JGroupsSchema.java @@ -52,7 +52,7 @@ public ActiveMQConnectionFactory internalNewObject(URI uri, } else { factory = ActiveMQJMSClient.createConnectionFactoryWithoutHA(dcConfig, options.getFactoryTypeEnum()); } - return BeanSupport.setData(uri, factory, query); + return setData(uri, query, factory); } @Override diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/TCPSchema.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/TCPSchema.java index 8ea3cfc166b..eddff33e9f7 100644 --- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/TCPSchema.java +++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/TCPSchema.java @@ -57,7 +57,7 @@ protected ActiveMQConnectionFactory internalNewObject(URI uri, factory = ActiveMQJMSClient.createConnectionFactoryWithoutHA(options.getFactoryTypeEnum(), tcs); } - return BeanSupport.setData(uri, factory, query); + return setData(uri, query, factory); } @Override diff --git a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/UDPSchema.java b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/UDPSchema.java index 45f7ebfa766..cb4e21770ea 100644 --- a/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/UDPSchema.java +++ b/artemis-jms-client/src/main/java/org/apache/activemq/artemis/uri/UDPSchema.java @@ -49,7 +49,7 @@ public ActiveMQConnectionFactory internalNewObject(URI uri, } else { factory = ActiveMQJMSClient.createConnectionFactoryWithoutHA(dgc, options.getFactoryTypeEnum()); } - return BeanSupport.setData(uri, factory, query); + return setData(uri, query, factory); } @Override diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/SimpleJNDIClientTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/SimpleJNDIClientTest.java index 2acdb0bff73..a18248e26e9 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/SimpleJNDIClientTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/jms/SimpleJNDIClientTest.java @@ -719,4 +719,15 @@ public void test1xNamingNegative() throws NamingException, JMSException { connection.close(); } + + @Test + public void testUseTopologyForLoadBalancing() throws Exception { + Hashtable props = new Hashtable<>(); + props.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory"); + props.put("connectionFactory.ConnectionFactory", "vm://0?useTopologyForLoadBalancing=false"); + Context ctx = new InitialContext(props); + + ConnectionFactory connectionFactory = (ConnectionFactory) ctx.lookup("ConnectionFactory"); + assertFalse(((ActiveMQConnectionFactory)connectionFactory).getServerLocator().getUseTopologyForLoadBalancing()); + } } \ No newline at end of file