@Override protected URI internalNewURI(ServerLocator bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); UDPBroadcastEndpointFactory endpoint = (UDPBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); dgc.setBroadcastEndpointFactory(endpoint); String query = BeanSupport.getData(IGNORED, bean, dgc, 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 public String getGroupAddress() throws Exception { clearIO(); try { if (configuration.getEndpointFactory() instanceof UDPBroadcastEndpointFactory) { return ((UDPBroadcastEndpointFactory) configuration.getEndpointFactory()).getGroupAddress(); } throw new Exception("Invalid request because this is not a UDP Broadcast configuration."); } finally { blockOnIO(); } }
@Override protected URI internalNewURI(ServerLocator bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); UDPBroadcastEndpointFactory endpoint = (UDPBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); dgc.setBroadcastEndpointFactory(endpoint); String query = BeanSupport.getData(IGNORED, bean, dgc, 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(ServerLocator bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); UDPBroadcastEndpointFactory endpoint = (UDPBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); dgc.setBroadcastEndpointFactory(endpoint); String query = BeanSupport.getData(IGNORED, bean, dgc, endpoint); return new URI(SchemaConstants.UDP, null, endpoint.getGroupAddress(), endpoint.getGroupPort(), null, query, null); }
@Override protected URI internalNewURI(ServerLocator bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); UDPBroadcastEndpointFactory endpoint = (UDPBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); dgc.setBroadcastEndpointFactory(endpoint); String query = BeanSupport.getData(IGNORED, bean, dgc, endpoint); return new URI(SchemaConstants.UDP, null, endpoint.getGroupAddress(), endpoint.getGroupPort(), null, query, null); }
@Override protected URI internalNewURI(ServerLocator bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); UDPBroadcastEndpointFactory endpoint = (UDPBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); dgc.setBroadcastEndpointFactory(endpoint); String query = BeanSupport.getData(IGNORED, bean, dgc, 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(); 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(ServerLocator bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); UDPBroadcastEndpointFactory endpoint = (UDPBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); dgc.setBroadcastEndpointFactory(endpoint); String query = BeanSupport.getData(IGNORED, bean, dgc, endpoint); return new URI(SchemaConstants.UDP, null, endpoint.getGroupAddress(), endpoint.getGroupPort(), null, query, null); }
@Override protected URI internalNewURI(ServerLocator bean) throws Exception { DiscoveryGroupConfiguration dgc = bean.getDiscoveryGroupConfiguration(); UDPBroadcastEndpointFactory endpoint = (UDPBroadcastEndpointFactory) dgc.getBroadcastEndpointFactory(); dgc.setBroadcastEndpointFactory(endpoint); String query = BeanSupport.getData(IGNORED, bean, dgc, endpoint); return new URI(SchemaConstants.UDP, null, endpoint.getGroupAddress(), endpoint.getGroupPort(), null, query, null); }
private DiscoveryGroupConfiguration translateDiscoveryGroupConfiguration(org.apache.activemq.artemis.api.core.DiscoveryGroupConfiguration newDiscoveryGroupConfiguration) throws StartException { org.apache.activemq.artemis.api.core.BroadcastEndpointFactory newBroadcastEndpointFactory = newDiscoveryGroupConfiguration.getBroadcastEndpointFactory(); BroadcastEndpointFactoryConfiguration legacyBroadcastEndpointFactory; if (newBroadcastEndpointFactory instanceof org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory) { org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory factory = (org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory) newBroadcastEndpointFactory; legacyBroadcastEndpointFactory = new UDPBroadcastGroupConfiguration( factory.getGroupAddress(), factory.getGroupPort(), factory.getLocalBindAddress(), factory.getLocalBindPort()); } else if (newBroadcastEndpointFactory instanceof org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory) { org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory factory = (org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory) newBroadcastEndpointFactory; legacyBroadcastEndpointFactory = new org.hornetq.api.core.JGroupsBroadcastGroupConfiguration( factory.getChannel(), factory.getChannelName()); } else { throw MessagingLogger.ROOT_LOGGER.unsupportedBroadcastGroupConfigurationForLegacy(newBroadcastEndpointFactory.getClass().getName()); } return new DiscoveryGroupConfiguration(newDiscoveryGroupConfiguration.getName(), newDiscoveryGroupConfiguration.getRefreshTimeout(), newDiscoveryGroupConfiguration.getDiscoveryInitialWaitTimeout(), legacyBroadcastEndpointFactory); }
private DiscoveryGroupConfiguration translateDiscoveryGroupConfiguration(org.apache.activemq.artemis.api.core.DiscoveryGroupConfiguration newDiscoveryGroupConfiguration) throws StartException { org.apache.activemq.artemis.api.core.BroadcastEndpointFactory newBroadcastEndpointFactory = newDiscoveryGroupConfiguration.getBroadcastEndpointFactory(); BroadcastEndpointFactoryConfiguration legacyBroadcastEndpointFactory; if (newBroadcastEndpointFactory instanceof org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory) { org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory factory = (org.apache.activemq.artemis.api.core.UDPBroadcastEndpointFactory) newBroadcastEndpointFactory; legacyBroadcastEndpointFactory = new UDPBroadcastGroupConfiguration( factory.getGroupAddress(), factory.getGroupPort(), factory.getLocalBindAddress(), factory.getLocalBindPort()); } else if (newBroadcastEndpointFactory instanceof org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory) { org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory factory = (org.apache.activemq.artemis.api.core.ChannelBroadcastEndpointFactory) newBroadcastEndpointFactory; legacyBroadcastEndpointFactory = new org.hornetq.api.core.JGroupsBroadcastGroupConfiguration( factory.getChannel(), factory.getChannelName()); } else { throw MessagingLogger.ROOT_LOGGER.unsupportedBroadcastGroupConfigurationForLegacy(newBroadcastEndpointFactory.getClass().getName()); } return new DiscoveryGroupConfiguration(newDiscoveryGroupConfiguration.getName(), newDiscoveryGroupConfiguration.getRefreshTimeout(), newDiscoveryGroupConfiguration.getDiscoveryInitialWaitTimeout(), legacyBroadcastEndpointFactory); }
@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()); }
@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 testCreateConnectionFactoryOverrideDiscovery() throws Exception { ActiveMQResourceAdapter ra = new ActiveMQResourceAdapter(); ra.setConnectorClassName(InVMConnectorFactory.class.getName()); ConnectionFactoryProperties connectionFactoryProperties = new ConnectionFactoryProperties(); connectionFactoryProperties.setDiscoveryAddress("myhost"); connectionFactoryProperties.setDiscoveryPort(5678); connectionFactoryProperties.setDiscoveryLocalBindAddress("newAddress"); ActiveMQConnectionFactory factory = ra.getConnectionFactory(connectionFactoryProperties); ActiveMQConnectionFactory defaultFactory = ra.getDefaultActiveMQConnectionFactory(); Assert.assertNotSame(factory, defaultFactory); DiscoveryGroupConfiguration dc = factory.getServerLocator().getDiscoveryGroupConfiguration(); UDPBroadcastEndpointFactory udpDg = (UDPBroadcastEndpointFactory) dc.getBroadcastEndpointFactory(); Assert.assertEquals(udpDg.getLocalBindAddress(), "newAddress"); Assert.assertEquals(udpDg.getGroupAddress(), "myhost"); Assert.assertEquals(udpDg.getGroupPort(), 5678); }
@Test public void testAttributes() throws Exception { UDPBroadcastEndpointFactory udpCfg = (UDPBroadcastEndpointFactory) broadcastGroupConfig.getEndpointFactory(); Assert.assertEquals(broadcastGroupConfig.getName(), broadcastGroupControl.getName()); Assert.assertEquals(udpCfg.getGroupAddress(), broadcastGroupControl.getGroupAddress()); Assert.assertEquals(udpCfg.getGroupPort(), broadcastGroupControl.getGroupPort()); Assert.assertEquals(udpCfg.getLocalBindPort(), broadcastGroupControl.getLocalBindPort()); Assert.assertEquals(broadcastGroupConfig.getBroadcastPeriod(), broadcastGroupControl.getBroadcastPeriod()); Object[] connectorPairs = broadcastGroupControl.getConnectorPairs(); Assert.assertEquals(1, connectorPairs.length); String connectorPairData = (String) connectorPairs[0]; Assert.assertEquals(broadcastGroupConfig.getConnectorInfos().get(0), connectorPairData); String jsonString = broadcastGroupControl.getConnectorPairsAsJSON(); Assert.assertNotNull(jsonString); JsonArray array = JsonUtil.readJsonArray(jsonString); Assert.assertEquals(1, array.size()); Assert.assertEquals(broadcastGroupConfig.getConnectorInfos().get(0), array.getString(0)); Assert.assertTrue(broadcastGroupControl.isStarted()); }
@Test public void testResourceAdapterSetupNoOverrideDiscovery() throws Exception { ActiveMQResourceAdapter qResourceAdapter = new ActiveMQResourceAdapter(); qResourceAdapter.setDiscoveryAddress("231.6.6.6"); qResourceAdapter.setDiscoveryPort(1234); qResourceAdapter.setDiscoveryRefreshTimeout(1L); qResourceAdapter.setDiscoveryInitialWaitTimeout(1L); ActiveMQRATestBase.MyBootstrapContext ctx = new ActiveMQRATestBase.MyBootstrapContext(); qResourceAdapter.start(ctx); ActiveMQActivationSpec spec = new ActiveMQActivationSpec(); spec.setResourceAdapter(qResourceAdapter); spec.setUseJNDI(false); spec.setDestinationType("javax.jms.Queue"); spec.setDestination(MDBQUEUE); ActiveMQConnectionFactory fac = qResourceAdapter.getConnectionFactory(spec); DiscoveryGroupConfiguration dc = fac.getServerLocator().getDiscoveryGroupConfiguration(); UDPBroadcastEndpointFactory udpDg = (UDPBroadcastEndpointFactory) dc.getBroadcastEndpointFactory(); assertEquals(udpDg.getGroupAddress(), "231.6.6.6"); assertEquals(udpDg.getGroupPort(), 1234); assertEquals(dc.getRefreshTimeout(), 1L); assertEquals(dc.getDiscoveryInitialWaitTimeout(), 1L); qResourceAdapter.stop(); }