@Override public void connectionReadyForWrites(Object connectionID, boolean ready) { RemotingConnection connection = connectionMap.get(connectionID); if (connection != null) { log.info("Connection " + connection.getRemoteAddress() + " ready"); connection.getTransportConnection().fireReady(true); } else { log.error("Connection with id " + connectionID + " not found in connectionReadyForWrites()!"); } }
@Override public void connectionDestroyed(Object connectionID) { RemotingConnection connection = connectionMap.remove(connectionID); if (connection != null) { log.info("Connection " + connection.getRemoteAddress() + " destroyed"); connection.fail(new ActiveMQRemoteDisconnectException()); } else { log.error("Connection with id " + connectionID + " not found in connectionDestroyed"); } }
@Override public void connectionReadyForWrites(Object connectionID, boolean ready) { RemotingConnection connection = connectionMap.get(connectionID); if (connection != null) { log.info("Connection " + connection.getRemoteAddress() + " ready"); connection.getTransportConnection().fireReady(true); } else { log.error("Connection with id " + connectionID + " not found in connectionReadyForWrites()!"); } }
@Override public Map<String, String> getNodes() { synchronized (recordsGuard) { Map<String, String> nodes = new HashMap<>(); for (Entry<String, MessageFlowRecord> entry : records.entrySet()) { RemotingConnection fwdConnection = entry.getValue().getBridge().getForwardingConnection(); if (fwdConnection != null) { nodes.put(entry.getKey(), fwdConnection.getRemoteAddress()); } } return nodes; } }
@Override public void connectionException(Object connectionID, ActiveMQException me) { RemotingConnection connection = connectionMap.get(connectionID); if (connection != null) { log.info("Connection " + connection.getRemoteAddress() + " exception: " + me.getMessage()); connection.fail(me); } else { log.error("Connection with id " + connectionID + " not found in connectionException"); } }
@Override public void connectionException(Object connectionID, ActiveMQException me) { RemotingConnection connection = connectionMap.get(connectionID); if (connection != null) { log.info("Connection " + connection.getRemoteAddress() + " exception: " + me.getMessage()); connection.fail(me); } else { log.error("Connection with id " + connectionID + " not found in connectionException"); } }
@Override public void connectionReadyForWrites(Object connectionID, boolean ready) { RemotingConnection connection = connectionMap.get(connectionID); if (connection != null) { log.info("Connection " + connection.getRemoteAddress() + " ready"); connection.getTransportConnection().fireReady(true); } else { log.error("Connection with id " + connectionID + " not found in connectionReadyForWrites()!"); } }
@Override public void connectionException(Object connectionID, ActiveMQException me) { RemotingConnection connection = connectionMap.get(connectionID); if (connection != null) { log.info("Connection " + connection.getRemoteAddress() + " exception: " + me.getMessage()); connection.fail(me); } else { log.error("Connection with id " + connectionID + " not found in connectionException"); } }
@Override public void connectionDestroyed(Object connectionID) { RemotingConnection connection = connectionMap.remove(connectionID); if (connection != null) { log.info("Connection " + connection.getRemoteAddress() + " destroyed"); connection.fail(new ActiveMQRemoteDisconnectException()); } else { log.error("Connection with id " + connectionID + " not found in connectionDestroyed"); } }
@Override public void connectionDestroyed(Object connectionID) { RemotingConnection connection = connectionMap.remove(connectionID); if (connection != null) { log.info("Connection " + connection.getRemoteAddress() + " destroyed"); connection.fail(new ActiveMQRemoteDisconnectException()); } else { log.error("Connection with id " + connectionID + " not found in connectionDestroyed"); } }
@Override public String[] listRemoteAddresses(final String ipAddress) { checkStarted(); clearIO(); try { Set<RemotingConnection> connections = remotingService.getConnections(); List<String> remoteConnections = new ArrayList<>(); for (RemotingConnection connection : connections) { String remoteAddress = connection.getRemoteAddress(); if (remoteAddress.contains(ipAddress)) { remoteConnections.add(connection.getRemoteAddress()); } } return remoteConnections.toArray(new String[remoteConnections.size()]); } finally { blockOnIO(); } }
@Override public boolean intercept(final Packet packet, final RemotingConnection connection) throws ActiveMQException { System.out.println("SimpleInterceptor gets called!"); System.out.println("Packet: " + packet.getClass().getName()); System.out.println("RemotingConnection: " + connection.getRemoteAddress()); if (packet instanceof SessionSendMessage) { SessionSendMessage realPacket = (SessionSendMessage) packet; Message msg = realPacket.getMessage(); msg.putStringProperty(new SimpleString("newproperty"), new SimpleString("Hello from interceptor!")); } // We return true which means "call next interceptor" (if there is one) or target. // If we returned false, it means "abort call" - no more interceptors would be called and neither would // the target return true; }
@Override public void run() { conn.fail(ActiveMQMessageBundle.BUNDLE.clientExited(conn.getRemoteAddress(), pair.getB())); } });
@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(); } }
@Override public String[] listRemoteAddresses() { checkStarted(); clearIO(); try { Set<RemotingConnection> connections = remotingService.getConnections(); String[] remoteAddresses = new String[connections.size()]; int i = 0; for (RemotingConnection connection : connections) { remoteAddresses[i++] = connection.getRemoteAddress(); } return remoteAddresses; } finally { blockOnIO(); } }
return connection.getID(); case "remoteAddress": return connection.getRemoteAddress(); case "users": Set<String> users = new HashSet<>();
private void sendConnectionNotification(final RemotingConnection connection, final CoreNotificationType type) { final ManagementService managementService = getManagementService(); if (managementService != null && sendConnectionNotifications) { try { final TypedProperties props = new TypedProperties(); props.putSimpleStringProperty(ManagementHelper.HDR_CONNECTION_NAME, SimpleString.toSimpleString(connection.getID().toString())); props.putSimpleStringProperty(ManagementHelper.HDR_REMOTE_ADDRESS, SimpleString.toSimpleString(connection.getRemoteAddress())); managementService.sendNotification(new Notification(null, type, props)); } catch (Exception e) { logger.warn("Error sending notification: " + type, e.getMessage(), e); } } }
@Override public JsonObjectBuilder toJson(RemotingConnection connection) { List<ServerSession> sessions = server.getSessions(connection.getID().toString()); Set<String> users = new HashSet<>(); String jmsSessionClientID = null; for (ServerSession session : sessions) { String username = session.getUsername() == null ? "" : session.getUsername(); users.add(username); //for the special case for JMS if (session.getMetaData(ClientSession.JMS_SESSION_IDENTIFIER_PROPERTY) != null) { jmsSessionClientID = session.getMetaData("jms-client-id"); } } return JsonLoader.createObjectBuilder().add("connectionID", toString(connection.getID())) .add("remoteAddress", toString(connection.getRemoteAddress())) .add("users", StringUtil.joinStringList(users, ",")) .add("creationTime", new Date(connection.getCreationTime()).toString()) .add("implementation", toString(connection.getClass().getSimpleName())) .add("protocol", toString(connection.getProtocolName())) .add("clientID", toString(connection.getClientID() != null ? connection.getClientID() : jmsSessionClientID)) .add("localAddress", toString(connection.getTransportLocalAddress())) .add("sessionCount", server.getSessions(connection.getID().toString()).size()); }
public Vote sendQuorumVote(SimpleString handler, Vote vote) { try { ActiveMQServerLogger.LOGGER.sendingQuorumVoteRequest(getSessionFactory().getConnection().getRemoteAddress(), vote.toString()); QuorumVoteReplyMessage replyMessage = (QuorumVoteReplyMessage) clusterChannel.sendBlocking(new QuorumVoteMessage(handler, vote), PacketImpl.QUORUM_VOTE_REPLY); QuorumVoteHandler voteHandler = server.getClusterManager().getQuorumManager().getVoteHandler(replyMessage.getHandler()); replyMessage.decodeRest(voteHandler); Vote voteResponse = replyMessage.getVote(); ActiveMQServerLogger.LOGGER.receivedQuorumVoteResponse(getSessionFactory().getConnection().getRemoteAddress(), voteResponse.toString()); return voteResponse; } catch (ActiveMQException e) { return null; } }
@Override public boolean closeConnectionsForAddress(final String ipAddress) { checkStarted(); clearIO(); try { boolean closed = false; Set<RemotingConnection> connections = remotingService.getConnections(); for (RemotingConnection connection : connections) { String remoteAddress = connection.getRemoteAddress(); if (remoteAddress.contains(ipAddress)) { connection.fail(ActiveMQMessageBundle.BUNDLE.connectionsClosedByManagement(ipAddress)); remotingService.removeConnection(connection.getID()); closed = true; } } return closed; } finally { blockOnIO(); } }