@Override public void addInterceptor(Interceptor interceptor) { server.getRemotingService().addIncomingInterceptor(interceptor); }
@Override public void removeInterceptor(Interceptor interceptor) { server.getRemotingService().removeIncomingInterceptor(interceptor); }
@Override public String listConnectionsAsJSON() throws Exception { checkStarted(); clearIO(); try { JsonArrayBuilder array = JsonLoader.createArrayBuilder(); Set<RemotingConnection> connections = server.getRemotingService().getConnections(); for (RemotingConnection connection : connections) { JsonObjectBuilder obj = JsonLoader.createObjectBuilder().add("connectionID", connection.getID().toString()).add("clientAddress", connection.getRemoteAddress()).add("creationTime", connection.getCreationTime()).add("implementation", connection.getClass().getSimpleName()).add("sessionCount", server.getSessions(connection.getID().toString()).size()); array.add(obj); } return array.build().toString(); } finally { blockOnIO(); } }
private void assertNoMoreConnections() { assertEquals(0, server0.getRemotingService().getConnections().size()); assertEquals(0, server1.getRemotingService().getConnections().size()); if (server2 != null) assertEquals(0, server2.getRemotingService().getConnections().size()); }
/** * @param backup * @param live * @param packetCode which packet is going to be intercepted. */ public BackupSyncDelay(ActiveMQServer backup, ActiveMQServer live, byte packetCode) { this.backup = backup; this.live = live; live.getRemotingService().addIncomingInterceptor(this); handler = new ReplicationChannelHandler(packetCode); }
@Test public void testTwoWaySSLVerifyClientTrustAllTrueByURI() throws Exception { NettyAcceptor acceptor = (NettyAcceptor) server.getRemotingService().getAcceptor("nettySSL"); acceptor.getConfiguration().put(TransportConstants.NEED_CLIENT_AUTH_PROP_NAME, true); server.getRemotingService().stop(false); server.getRemotingService().start(); server.getRemotingService().startAcceptors(); //Set trust all so this should work even with no trust store set StringBuilder uri = new StringBuilder("tcp://" + tc.getParams().get(TransportConstants.HOST_PROP_NAME).toString() + ":" + tc.getParams().get(TransportConstants.PORT_PROP_NAME).toString()); uri.append("?").append(TransportConstants.SSL_ENABLED_PROP_NAME).append("=true"); uri.append("&").append(TransportConstants.TRUST_ALL_PROP_NAME).append("=true"); uri.append("&").append(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME).append("=").append(storeType); uri.append("&").append(TransportConstants.KEYSTORE_PATH_PROP_NAME).append("=").append(CLIENT_SIDE_KEYSTORE); uri.append("&").append(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME).append("=").append(PASSWORD); server.getRemotingService().addIncomingInterceptor(new MyInterceptor()); ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocator(uri.toString())); ClientSessionFactory sf = createSessionFactory(locator); sf.close(); }
public void deliverUpToDateMsg() { live.getRemotingService().removeIncomingInterceptor(this); if (backup.isStarted()) handler.deliver(); }
@Test public void testTwoWaySSLVerifyClientTrustAllTrue() throws Exception { NettyAcceptor acceptor = (NettyAcceptor) server.getRemotingService().getAcceptor("nettySSL"); acceptor.getConfiguration().put(TransportConstants.NEED_CLIENT_AUTH_PROP_NAME, true); server.getRemotingService().stop(false); server.getRemotingService().start(); server.getRemotingService().startAcceptors(); //Set trust all so this should work even with no trust store set tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true); tc.getParams().put(TransportConstants.TRUST_ALL_PROP_NAME, true); tc.getParams().put(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME, storeType); tc.getParams().put(TransportConstants.KEYSTORE_PATH_PROP_NAME, CLIENT_SIDE_KEYSTORE); tc.getParams().put(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME, PASSWORD); server.getRemotingService().addIncomingInterceptor(new MyInterceptor()); ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocatorWithoutHA(tc)); ClientSessionFactory sf = createSessionFactory(locator); sf.close(); }
@Test public void testTwoWaySSLVerifyClientTrustAllTrue() throws Exception { NettyAcceptor acceptor = (NettyAcceptor) server.getRemotingService().getAcceptor("nettySSL"); acceptor.getConfiguration().put(TransportConstants.NEED_CLIENT_AUTH_PROP_NAME, true); server.getRemotingService().stop(false); server.getRemotingService().start(); server.getRemotingService().startAcceptors(); //Set trust all so this should work even with no trust store set tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true); tc.getParams().put(TransportConstants.TRUST_ALL_PROP_NAME, true); tc.getParams().put(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME, storeType); tc.getParams().put(TransportConstants.KEYSTORE_PATH_PROP_NAME, CLIENT_SIDE_KEYSTORE); tc.getParams().put(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME, PASSWORD); server.getRemotingService().addIncomingInterceptor(new MyInterceptor()); ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocatorWithoutHA(tc)); ClientSessionFactory sf = createSessionFactory(locator); sf.close(); }
@Test public void testTwoWaySSLVerifyClientTrustAllTrue() throws Exception { NettyAcceptor acceptor = (NettyAcceptor) server.getRemotingService().getAcceptor("nettySSL"); acceptor.getConfiguration().put(TransportConstants.NEED_CLIENT_AUTH_PROP_NAME, true); server.getRemotingService().stop(false); server.getRemotingService().start(); server.getRemotingService().startAcceptors(); //Set trust all so this should work even with no trust store set tc.getParams().put(TransportConstants.SSL_ENABLED_PROP_NAME, true); tc.getParams().put(TransportConstants.SSL_PROVIDER, TransportConstants.OPENSSL_PROVIDER); tc.getParams().put(TransportConstants.TRUST_ALL_PROP_NAME, true); tc.getParams().put(TransportConstants.KEYSTORE_PROVIDER_PROP_NAME, storeType); tc.getParams().put(TransportConstants.KEYSTORE_PATH_PROP_NAME, CLIENT_SIDE_KEYSTORE); tc.getParams().put(TransportConstants.KEYSTORE_PASSWORD_PROP_NAME, PASSWORD); server.getRemotingService().addIncomingInterceptor(new MyInterceptor()); ServerLocator locator = addServerLocator(ActiveMQClient.createServerLocatorWithoutHA(tc)); ClientSessionFactory sf = createSessionFactory(locator); sf.close(); }
@Test public void testMultipleAcceptorsWithSameHostPortDifferentName() throws Exception { final String acceptorFactoryClass = FakeAcceptorFactory.class.getName(); Map<String, Object> params = new HashMap<>(); params.put("host", "localhost"); params.put("port", 5445); Set<TransportConfiguration> tcs = new HashSet<>(); tcs.add(new TransportConfiguration(acceptorFactoryClass, params, "Acceptor1")); tcs.add(new TransportConfiguration(acceptorFactoryClass, params, "Acceptor2")); Configuration config = createBasicConfig(); config.setAcceptorConfigurations(tcs); ActiveMQServer server = createServer(config); server.start(); waitForServerToStart(server); assertNotNull(server.getRemotingService().getAcceptor("Acceptor1")); assertNotNull(server.getRemotingService().getAcceptor("Acceptor2")); } }
@Override public void setUp() throws Exception { super.setUp(); server.getRemotingService().createAcceptor("test", "tcp://127.0.0.1:" + wsport + "?stompMaxFramePayloadLength=" + stompWSMaxFrameSize).start(); wsURI = createStompClientUri(scheme, hostname, wsport); }
@Test public void testProviderConfig() { NettyAcceptor acceptor = (NettyAcceptor) server.getRemotingService().getAcceptor(getNettyAcceptorName()); assertNotNull(acceptor); String sslProviderInUse = (String) acceptor.getConfiguration().get(TransportConstants.SSL_PROVIDER); assertEquals(sslProvider, sslProviderInUse); }
@Test public void testProviderConfig() { NettyAcceptor acceptor = (NettyAcceptor) server.getRemotingService().getAcceptor(getNettyAcceptorName()); assertNotNull(acceptor); String sslProviderInUse = (String) acceptor.getConfiguration().get(TransportConstants.SSL_PROVIDER); assertEquals(sslProvider, sslProviderInUse); assertTrue((Boolean) acceptor.getConfiguration().get(TransportConstants.NEED_CLIENT_AUTH_PROP_NAME)); }
@Override public String listConnections(String options, int page, int pageSize) throws Exception { checkStarted(); clearIO(); try { server.getPostOffice().getAddresses(); ConnectionView view = new ConnectionView(server); view.setCollection(server.getRemotingService().getConnections()); view.setOptions(options); return view.getResultsAsJson(page, pageSize); } finally { blockOnIO(); } }
@Test public void testClosingTemporaryTopicDeletesQueue() throws JMSException, ActiveMQException { conn = cf.createConnection(); Assert.assertEquals(1, server.getRemotingService().getConnections().size()); session1 = (ActiveMQSession) conn.createSession(false, Session.AUTO_ACKNOWLEDGE); ActiveMQTemporaryTopic topic = (ActiveMQTemporaryTopic) session1.createTemporaryTopic(); String address = topic.getAddress(); session1.close(); conn.close(); conn2 = cf.createConnection(); session2 = (ActiveMQSession) conn2.createSession(false, Session.AUTO_ACKNOWLEDGE); ClientSession cs = session2.getCoreSession(); try { cs.createConsumer(address); fail("the address from the TemporaryTopic still exists!"); } catch (ActiveMQException e) { assertEquals("expecting 'queue does not exist'", ActiveMQExceptionType.QUEUE_DOES_NOT_EXIST, e.getType()); } }
@Test(timeout = 60000) public void testCloseIsSentOnConnectionClose() throws Exception { AmqpClient client = createAmqpClient(); AmqpConnection amqpConnection = client.connect(); try { for (RemotingConnection connection : server.getRemotingService().getConnections()) { server.getRemotingService().removeConnection(connection); connection.disconnect(true); } Wait.assertTrue(amqpConnection::isClosed); assertEquals(AmqpSupport.CONNECTION_FORCED, amqpConnection.getConnection().getRemoteCondition().getCondition()); } finally { amqpConnection.close(); } }
@Override public boolean intercept(Packet packet, RemotingConnection connection) throws ActiveMQException { if (packet.getType() == PacketImpl.BACKUP_REGISTRATION) { try { SharedNothingBackupActivation activation = (SharedNothingBackupActivation) backup.getActivation(); ReplicationEndpoint repEnd = activation.getReplicationEndpoint(); handler.addSubHandler(repEnd); Channel repChannel = repEnd.getChannel(); repChannel.setHandler(handler); handler.setChannel(repChannel); live.getRemotingService().removeIncomingInterceptor(this); } catch (Exception e) { throw new RuntimeException(e); } } return true; }
@Test public void testConnectionTTL() throws Exception { int port = 61614; URI uri = createStompClientUri(scheme, hostname, port); server.getRemotingService().createAcceptor("test", "tcp://127.0.0.1:" + port + "?connectionTtl=1000").start(); StompClientConnection conn = StompClientConnectionFactory.createClientConnection(uri); conn.connect("brianm", "wombats"); Thread.sleep(5000); ClientStompFrame frame = conn.receiveFrame(); assertEquals(Stomp.Responses.ERROR, frame.getCommand()); assertFalse(conn.isConnected()); }
@Test public void testServerOutgoingInterceptorRejectMessage() throws Exception { MyOutgoingInterceptor2 interceptor = new MyOutgoingInterceptor2(); server.getRemotingService().addOutgoingInterceptor(interceptor); locator.setBlockOnNonDurableSend(false); ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, true, true, true); session.createQueue(QUEUE, QUEUE, null, false); ClientProducer producer = session.createProducer(QUEUE); final int numMessages = 10; for (int i = 0; i < numMessages; i++) { ClientMessage message = session.createMessage(false); producer.send(message); } ClientConsumer consumer = session.createConsumer(QUEUE); session.start(); ClientMessage message = consumer.receiveImmediate(); Assert.assertNull(message); session.close(); }