@Override protected URI internalNewURI(ActiveMQConnectionFactory bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); UDPBroadcastEndpointFactory endpoint = (UDPBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); String query = BeanSupport.getData(UDPServerLocatorSchema.IGNORED, bean, dgc, endpoint); dgc.setBroadcastEndpointFactory(endpoint); return new URI(SchemaConstants.UDP, null, endpoint.getGroupAddress(), endpoint.getGroupPort(), null, query, null); } }
@Override protected URI internalNewURI(ActiveMQConnectionFactory bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); BroadcastEndpointFactory endpoint = dgc.getBroadcastEndpointFactory(); String auth; if (endpoint instanceof JGroupsFileBroadcastEndpointFactory) { auth = ((JGroupsFileBroadcastEndpointFactory) endpoint).getChannelName(); } else if (endpoint instanceof JGroupsPropertiesBroadcastEndpointFactory) { auth = ((JGroupsPropertiesBroadcastEndpointFactory) endpoint).getChannelName(); } else { throw new NotSerializableException(endpoint + "not serializable"); } String query = BeanSupport.getData(null, bean, dgc, endpoint); dgc.setBroadcastEndpointFactory(endpoint); return new URI(SchemaConstants.JGROUPS, null, auth, -1, null, query, null); } }
@Override protected URI internalNewURI(ActiveMQConnectionFactory bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); UDPBroadcastEndpointFactory endpoint = (UDPBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); String query = BeanSupport.getData(UDPServerLocatorSchema.IGNORED, bean, dgc, endpoint); dgc.setBroadcastEndpointFactory(endpoint); return new URI(SchemaConstants.UDP, null, endpoint.getGroupAddress(), endpoint.getGroupPort(), null, query, null); } }
@Override protected URI internalNewURI(ActiveMQConnectionFactory bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); BroadcastEndpointFactory endpoint = dgc.getBroadcastEndpointFactory(); String auth; if (endpoint instanceof JGroupsFileBroadcastEndpointFactory) { auth = ((JGroupsFileBroadcastEndpointFactory) endpoint).getChannelName(); } else if (endpoint instanceof JGroupsPropertiesBroadcastEndpointFactory) { auth = ((JGroupsPropertiesBroadcastEndpointFactory) endpoint).getChannelName(); } else { throw new NotSerializableException(endpoint + "not serializable"); } String query = BeanSupport.getData(null, bean, dgc, endpoint); dgc.setBroadcastEndpointFactory(endpoint); return new URI(SchemaConstants.JGROUPS, null, auth, -1, null, query, null); } }
@Override protected URI internalNewURI(ActiveMQConnectionFactory bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); UDPBroadcastEndpointFactory endpoint = (UDPBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); String query = BeanSupport.getData(UDPServerLocatorSchema.IGNORED, bean, dgc, endpoint); dgc.setBroadcastEndpointFactory(endpoint); return new URI(SchemaConstants.UDP, null, endpoint.getGroupAddress(), endpoint.getGroupPort(), null, query, null); } }
@Override protected URI internalNewURI(ActiveMQConnectionFactory bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); BroadcastEndpointFactory endpoint = dgc.getBroadcastEndpointFactory(); String auth; if (endpoint instanceof JGroupsFileBroadcastEndpointFactory) { auth = ((JGroupsFileBroadcastEndpointFactory) endpoint).getChannelName(); } else if (endpoint instanceof JGroupsPropertiesBroadcastEndpointFactory) { auth = ((JGroupsPropertiesBroadcastEndpointFactory) endpoint).getChannelName(); } else { throw new NotSerializableException(endpoint + "not serializable"); } String query = BeanSupport.getData(null, bean, dgc, endpoint); dgc.setBroadcastEndpointFactory(endpoint); return new URI(SchemaConstants.JGROUPS, null, auth, -1, null, query, null); } }
@Override protected URI internalNewURI(ActiveMQConnectionFactory bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); BroadcastEndpointFactory endpoint = dgc.getBroadcastEndpointFactory(); String auth; if (endpoint instanceof JGroupsFileBroadcastEndpointFactory) { auth = ((JGroupsFileBroadcastEndpointFactory) endpoint).getChannelName(); } else if (endpoint instanceof JGroupsPropertiesBroadcastEndpointFactory) { auth = ((JGroupsPropertiesBroadcastEndpointFactory) endpoint).getChannelName(); } else { throw new NotSerializableException(endpoint + "not serializable"); } String query = BeanSupport.getData(null, bean, dgc, endpoint); dgc.setBroadcastEndpointFactory(endpoint); return new URI(SchemaConstants.JGROUPS, null, auth, -1, null, query, null); } }
@Override protected URI internalNewURI(ActiveMQConnectionFactory bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); UDPBroadcastEndpointFactory endpoint = (UDPBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); String query = BeanSupport.getData(UDPServerLocatorSchema.IGNORED, bean, dgc, endpoint); dgc.setBroadcastEndpointFactory(endpoint); return new URI(SchemaConstants.UDP, null, endpoint.getGroupAddress(), endpoint.getGroupPort(), null, query, null); } }
@Override protected URI internalNewURI(ActiveMQConnectionFactory bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); UDPBroadcastEndpointFactory endpoint = (UDPBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); String query = BeanSupport.getData(UDPServerLocatorSchema.IGNORED, bean, dgc, endpoint); dgc.setBroadcastEndpointFactory(endpoint); return new URI(SchemaConstants.UDP, null, endpoint.getGroupAddress(), endpoint.getGroupPort(), null, query, null); } }
@Override protected URI internalNewURI(ActiveMQConnectionFactory bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); BroadcastEndpointFactory endpoint = dgc.getBroadcastEndpointFactory(); String auth; if (endpoint instanceof JGroupsFileBroadcastEndpointFactory) { auth = ((JGroupsFileBroadcastEndpointFactory) endpoint).getChannelName(); } else if (endpoint instanceof JGroupsPropertiesBroadcastEndpointFactory) { auth = ((JGroupsPropertiesBroadcastEndpointFactory) endpoint).getChannelName(); } else { throw new NotSerializableException(endpoint + "not serializable"); } String query = BeanSupport.getData(null, bean, dgc, endpoint); dgc.setBroadcastEndpointFactory(endpoint); return new URI(SchemaConstants.JGROUPS, null, auth, -1, null, query, null); } }
@Test public void testRemoteCFWithJGroups() throws Exception { Hashtable<String, String> props = new Hashtable<>(); props.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory"); props.put("connectionFactory.myConnectionFactory", "jgroups://mychannelid?file=test-jgroups-file_ping.xml"); Context ctx = new InitialContext(props); ActiveMQConnectionFactory connectionFactory = (ActiveMQConnectionFactory) ctx.lookup("myConnectionFactory"); connectionFactory.getDiscoveryGroupConfiguration().getBroadcastEndpointFactory().createBroadcastEndpoint().close(false); }
@Test public void testRemoteCFWithJgroupsWithTransportConfigFile() throws Exception { Hashtable<String, String> props = new Hashtable<>(); props.put(Context.INITIAL_CONTEXT_FACTORY, org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory.class.getCanonicalName()); props.put("connectionFactory.myConnectionFactory", "jgroups://testChannelName?file=test-jgroups-file_ping.xml&" + ActiveMQInitialContextFactory.REFRESH_TIMEOUT + "=5000&" + ActiveMQInitialContextFactory.DISCOVERY_INITIAL_WAIT_TIMEOUT + "=6000"); Context ctx = new InitialContext(props); ActiveMQConnectionFactory cf = (ActiveMQConnectionFactory) ctx.lookup("myConnectionFactory"); DiscoveryGroupConfiguration discoveryGroupConfiguration = cf.getDiscoveryGroupConfiguration(); Assert.assertEquals(5000, discoveryGroupConfiguration.getRefreshTimeout()); Assert.assertEquals(6000, discoveryGroupConfiguration.getDiscoveryInitialWaitTimeout()); BroadcastEndpoint broadcastEndpoint = cf.getDiscoveryGroupConfiguration().getBroadcastEndpointFactory().createBroadcastEndpoint(); Assert.assertTrue(broadcastEndpoint instanceof JGroupsFileBroadcastEndpoint); broadcastEndpoint.close(false); }
@Test public void testRemoteCFWithJgroupsWithTransportConfigNullProps() throws Exception { Hashtable<String, String> props = new Hashtable<>(); props.put(Context.INITIAL_CONTEXT_FACTORY, ActiveMQInitialContextFactory.class.getCanonicalName()); props.put("connectionFactory.ConnectionFactory", "jgroups://testChannelName?" + ActiveMQInitialContextFactory.REFRESH_TIMEOUT + "=5000&" + ActiveMQInitialContextFactory.DISCOVERY_INITIAL_WAIT_TIMEOUT + "=6000"); Context ctx = new InitialContext(props); ActiveMQConnectionFactory cf = (ActiveMQConnectionFactory) ctx.lookup("ConnectionFactory"); DiscoveryGroupConfiguration discoveryGroupConfiguration = cf.getDiscoveryGroupConfiguration(); Assert.assertEquals(5000, discoveryGroupConfiguration.getRefreshTimeout()); Assert.assertEquals(6000, discoveryGroupConfiguration.getDiscoveryInitialWaitTimeout()); BroadcastEndpointFactory broadcastEndpointFactory = cf.getDiscoveryGroupConfiguration().getBroadcastEndpointFactory(); Assert.assertTrue(broadcastEndpointFactory instanceof JGroupsPropertiesBroadcastEndpointFactory); JGroupsPropertiesBroadcastEndpointFactory endpointFactory = (JGroupsPropertiesBroadcastEndpointFactory) broadcastEndpointFactory; Assert.assertEquals(endpointFactory.getProperties(), null); Assert.assertEquals(endpointFactory.getChannelName(), "testChannelName"); }
@Test public void testRemoteCFWithJgroupsWithTransportConfigProps() throws Exception { Hashtable<String, String> props = new Hashtable<>(); props.put(Context.INITIAL_CONTEXT_FACTORY, ActiveMQInitialContextFactory.class.getCanonicalName()); props.put("connectionFactory.ConnectionFactory", "jgroups://testChannelName?properties=param=value&" + ActiveMQInitialContextFactory.REFRESH_TIMEOUT + "=5000&" + ActiveMQInitialContextFactory.DISCOVERY_INITIAL_WAIT_TIMEOUT + "=6000"); Context ctx = new InitialContext(props); ActiveMQConnectionFactory cf = (ActiveMQConnectionFactory) ctx.lookup("ConnectionFactory"); DiscoveryGroupConfiguration discoveryGroupConfiguration = cf.getDiscoveryGroupConfiguration(); Assert.assertEquals(5000, discoveryGroupConfiguration.getRefreshTimeout()); Assert.assertEquals(6000, discoveryGroupConfiguration.getDiscoveryInitialWaitTimeout()); BroadcastEndpointFactory broadcastEndpointFactory = cf.getDiscoveryGroupConfiguration().getBroadcastEndpointFactory(); Assert.assertTrue(broadcastEndpointFactory instanceof JGroupsPropertiesBroadcastEndpointFactory); JGroupsPropertiesBroadcastEndpointFactory endpointFactory = (JGroupsPropertiesBroadcastEndpointFactory) broadcastEndpointFactory; Assert.assertEquals(endpointFactory.getProperties(), "param=value"); Assert.assertEquals(endpointFactory.getChannelName(), "testChannelName"); }
@Test public void testRemoteCFWithUDPWithTransportConfig() throws NamingException, JMSException { Hashtable<String, String> props = new Hashtable<>(); props.put(Context.INITIAL_CONTEXT_FACTORY, ActiveMQInitialContextFactory.class.getCanonicalName()); props.put("connectionFactory.myConnectionFactory", "udp://" + getUDPDiscoveryAddress() + ":" + getUDPDiscoveryPort() + "?" + TransportConstants.LOCAL_ADDRESS_PROP_NAME + "=Server1&" + TransportConstants.LOCAL_PORT_PROP_NAME + "=1198&" + ActiveMQInitialContextFactory.REFRESH_TIMEOUT + "=5000&" + ActiveMQInitialContextFactory.DISCOVERY_INITIAL_WAIT_TIMEOUT + "=6000"); Context ctx = new InitialContext(props); ActiveMQConnectionFactory cf = (ActiveMQConnectionFactory) ctx.lookup("myConnectionFactory"); DiscoveryGroupConfiguration discoveryGroupConfiguration = cf.getDiscoveryGroupConfiguration(); Assert.assertEquals(5000, discoveryGroupConfiguration.getRefreshTimeout()); Assert.assertEquals(6000, discoveryGroupConfiguration.getDiscoveryInitialWaitTimeout()); UDPBroadcastEndpointFactory udpBroadcastEndpointFactory = (UDPBroadcastEndpointFactory) discoveryGroupConfiguration.getBroadcastEndpointFactory(); //these 2 are transient so are ignored Assert.assertNotEquals("Server1", udpBroadcastEndpointFactory.getLocalBindAddress()); Assert.assertNotEquals(1198, udpBroadcastEndpointFactory.getLocalBindPort()); Assert.assertEquals(getUDPDiscoveryAddress(), udpBroadcastEndpointFactory.getGroupAddress()); Assert.assertEquals(getUDPDiscoveryPort(), udpBroadcastEndpointFactory.getGroupPort()); }
adapter.setDiscoveryAddress("231.1.1.1"); ActiveMQConnectionFactory factory = adapter.getDefaultActiveMQConnectionFactory(); long initWait = factory.getDiscoveryGroupConfiguration().getDiscoveryInitialWaitTimeout(); long refresh = factory.getDiscoveryGroupConfiguration().getRefreshTimeout(); int port = ((UDPBroadcastEndpointFactory) factory.getDiscoveryGroupConfiguration().getBroadcastEndpointFactory()).getGroupPort(); adapter.setDiscoveryRefreshTimeout(1234L); factory = adapter.getDefaultActiveMQConnectionFactory(); initWait = factory.getDiscoveryGroupConfiguration().getDiscoveryInitialWaitTimeout(); refresh = factory.getDiscoveryGroupConfiguration().getRefreshTimeout(); adapter.setDiscoveryInitialWaitTimeout(9999L); factory = adapter.getDefaultActiveMQConnectionFactory(); initWait = factory.getDiscoveryGroupConfiguration().getDiscoveryInitialWaitTimeout(); refresh = factory.getDiscoveryGroupConfiguration().getRefreshTimeout(); adapter.setDiscoveryInitialWaitTimeout(9999L); factory = adapter.getDefaultActiveMQConnectionFactory(); initWait = factory.getDiscoveryGroupConfiguration().getDiscoveryInitialWaitTimeout(); refresh = factory.getDiscoveryGroupConfiguration().getRefreshTimeout();
@Test public void testSerialization() throws Exception { jmsCf1 = (ActiveMQConnectionFactory) namingContext.lookup("/ConnectionFactory1"); jmsCf2 = (ActiveMQConnectionFactory) namingContext.lookup("/ConnectionFactory2"); try { serialize(jmsCf1); } catch (java.io.NotSerializableException e) { //this is expected } //now cf2 should be OK byte[] x = serialize(jmsCf2); ActiveMQConnectionFactory jmsCf2Copy = deserialize(x, ActiveMQConnectionFactory.class); assertNotNull(jmsCf2Copy); BroadcastEndpointFactory broadcastEndpoint = jmsCf2Copy.getDiscoveryGroupConfiguration().getBroadcastEndpointFactory(); assertTrue(broadcastEndpoint instanceof JGroupsFileBroadcastEndpointFactory); }
@Test public void testConnectionFactoryUDP() throws Exception { createDiscoveryFactoryUDP(); cf = (ActiveMQConnectionFactory) namingContext.lookup("/MyConnectionFactory"); // apparently looking up the connection factory with the org.apache.activemq.artemis.jms.tests.tools.container.InVMInitialContextFactory // is not enough to actually serialize it so we serialize it manually byte[] x = serialize(cf); ActiveMQConnectionFactory y = deserialize(x, ActiveMQConnectionFactory.class); checkEquals(cf, y); DiscoveryGroupConfiguration dgc = y.getDiscoveryGroupConfiguration(); Assert.assertEquals(dgc.getName(), "dg1"); Assert.assertEquals(dgc.getDiscoveryInitialWaitTimeout(), 5000); Assert.assertEquals(dgc.getRefreshTimeout(), 5000); Assert.assertTrue(dgc.getBroadcastEndpointFactory() instanceof UDPBroadcastEndpointFactory); UDPBroadcastEndpointFactory befc = (UDPBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); Assert.assertEquals(Integer.parseInt(System.getProperty("org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory.localBindPort", "-1")), befc.getLocalBindPort()); Assert.assertEquals(System.getProperty("org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory.localBindAddress"), befc.getLocalBindAddress()); Assert.assertEquals(getUDPDiscoveryPort(), befc.getGroupPort()); Assert.assertEquals(getUDPDiscoveryAddress(), befc.getGroupAddress()); }
@Test public void testConnectionFactoryJgroupsProperties() throws Exception { createDiscoveryFactoryJGroupsProperties(); cf = (ActiveMQConnectionFactory) namingContext.lookup("/MyConnectionFactory"); // apparently looking up the connection factory with the org.apache.activemq.artemis.jms.tests.tools.container.InVMInitialContextFactory // is not enough to actually serialize it so we serialize it manually byte[] x = serialize(cf); ActiveMQConnectionFactory y = deserialize(x, ActiveMQConnectionFactory.class); checkEquals(cf, y); DiscoveryGroupConfiguration dgc = y.getDiscoveryGroupConfiguration(); Assert.assertEquals(dgc.getName(), "dg1"); Assert.assertEquals(dgc.getDiscoveryInitialWaitTimeout(), 5000); Assert.assertEquals(dgc.getRefreshTimeout(), 5000); Assert.assertTrue(dgc.getBroadcastEndpointFactory() instanceof JGroupsPropertiesBroadcastEndpointFactory); JGroupsPropertiesBroadcastEndpointFactory befc = (JGroupsPropertiesBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); Assert.assertEquals("myChannel", befc.getChannelName()); Assert.assertEquals("param=1,param2=2", befc.getProperties()); }
@Test public void testConnectionFactoryJgroupsFile() throws Exception { createDiscoveryFactoryJGroupsFile(); cf = (ActiveMQConnectionFactory) namingContext.lookup("/MyConnectionFactory"); // apparently looking up the connection factory with the org.apache.activemq.artemis.jms.tests.tools.container.InVMInitialContextFactory // is not enough to actually serialize it so we serialize it manually byte[] x = serialize(cf); ActiveMQConnectionFactory y = deserialize(x, ActiveMQConnectionFactory.class); checkEquals(cf, y); DiscoveryGroupConfiguration dgc = y.getDiscoveryGroupConfiguration(); Assert.assertEquals(dgc.getName(), "dg1"); Assert.assertEquals(dgc.getDiscoveryInitialWaitTimeout(), 5000); Assert.assertEquals(dgc.getRefreshTimeout(), 5000); Assert.assertTrue(dgc.getBroadcastEndpointFactory() instanceof JGroupsFileBroadcastEndpointFactory); JGroupsFileBroadcastEndpointFactory befc = (JGroupsFileBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); Assert.assertEquals("myChannel", befc.getChannelName()); Assert.assertEquals("/META-INF/myfile.xml", befc.getFile()); }