/** * @param node * @return */ protected ResourceLimitSettings parseResourceLimitSettings(final Node node) { ResourceLimitSettings resourceLimitSettings = new ResourceLimitSettings(); resourceLimitSettings.setMatch(SimpleString.toSimpleString(getAttributeValue(node, "match"))); NodeList children = node.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { final Node child = children.item(i); final String name = child.getNodeName(); if (MAX_CONNECTIONS_NODE_NAME.equalsIgnoreCase(name)) { resourceLimitSettings.setMaxConnections(XMLUtil.parseInt(child)); } else if (MAX_QUEUES_NODE_NAME.equalsIgnoreCase(name)) { resourceLimitSettings.setMaxQueues(XMLUtil.parseInt(child)); } } return resourceLimitSettings; }
private void checkSessionLimit(String username) throws Exception { if (configuration.getResourceLimitSettings() != null && configuration.getResourceLimitSettings().containsKey(username)) { ResourceLimitSettings limits = configuration.getResourceLimitSettings().get(username); if (limits.getMaxConnections() == -1) { return; } else if (limits.getMaxConnections() == 0 || getSessionCountForUser(username) >= limits.getMaxConnections()) { throw ActiveMQMessageBundle.BUNDLE.sessionLimitReached(username, limits.getMaxConnections()); } } }
@Override public void checkQueueCreationLimit(String username) throws Exception { if (configuration.getResourceLimitSettings() != null && configuration.getResourceLimitSettings().containsKey(username)) { ResourceLimitSettings limits = configuration.getResourceLimitSettings().get(username); if (limits.getMaxQueues() == -1) { return; } else if (limits.getMaxQueues() == 0 || getQueueCountForUser(username) >= limits.getMaxQueues()) { throw ActiveMQMessageBundle.BUNDLE.queueLimitReached(username, limits.getMaxQueues()); } } }
assertEquals(104, conf.getResourceLimitSettings().get("myUser").getMaxConnections()); assertEquals(13, conf.getResourceLimitSettings().get("myUser").getMaxQueues());
@Override public ConfigurationImpl addResourceLimitSettings(ResourceLimitSettings resourceLimitSettings) { this.resourceLimitSettings.put(resourceLimitSettings.getMatch().toString(), resourceLimitSettings); return this; }
@Override @Before public void setUp() throws Exception { super.setUp(); ResourceLimitSettings resourceLimitSettings = new ResourceLimitSettings(); resourceLimitSettings.setMatch(SimpleString.toSimpleString("myUser")); resourceLimitSettings.setMaxConnections(1); resourceLimitSettings.setMaxQueues(1); Configuration configuration = createBasicConfig().addAcceptorConfiguration(new TransportConfiguration(INVM_ACCEPTOR_FACTORY)).addResourceLimitSettings(resourceLimitSettings).setSecurityEnabled(true); server = addServer(ActiveMQServers.newActiveMQServer(configuration, false)); server.start(); ActiveMQJAASSecurityManager securityManager = (ActiveMQJAASSecurityManager) server.getSecurityManager(); securityManager.getConfiguration().addUser("myUser", "password"); securityManager.getConfiguration().addRole("myUser", "arole"); Role role = new Role("arole", false, false, false, false, true, true, false, true, true, true); Set<Role> roles = new HashSet<>(); roles.add(role); server.getSecurityRepository().addMatch("#", roles); }