private void createArtemis(final Path brokerXmlFile) throws Exception { final ActiveMQSecurityManager security = createSecurityManager(); final FileConfiguration configuration = new FileConfiguration(); final FileJMSConfiguration jmsConfiguration = new FileJMSConfiguration(); final FileDeploymentManager fileDeploymentManager = new FileDeploymentManager(brokerXmlFile.toUri().toString()); fileDeploymentManager.addDeployable(configuration); fileDeploymentManager.addDeployable(jmsConfiguration); fileDeploymentManager.readConfiguration(); // load components this.components = fileDeploymentManager.buildService(security, ManagementFactory.getPlatformMBeanServer()); logger.info("Loaded components: {}", this.components.size()); for (final Map.Entry<String, ActiveMQComponent> entry : this.components.entrySet()) { logger.info("\t{} -> {}", entry.getKey(), entry.getValue()); } // register all protocols final ActiveMQServer server = (ActiveMQServer) this.components.get("core"); if (server != null) { for (final ProtocolManagerFactory<?> protocol : this.protocols) { logger.debug("Registering protocol: {}", protocol); server.addProtocolManagerFactory(protocol); } } // start components startComponents(); }
@Test public void testParsing() throws Exception { Configuration config = createDefaultInVMConfig() // anything so the parsing will work .addConnectorConfiguration("netty", new TransportConfiguration()); String conf = "activemq-jms-for-JMSServerDeployerTest.xml"; FileJMSConfiguration jmsconfig = new FileJMSConfiguration(); FileDeploymentManager deploymentManager = new FileDeploymentManager(conf); deploymentManager.addDeployable(jmsconfig); deploymentManager.readConfiguration(); assertEquals(1, jmsconfig.getQueueConfigurations().size()); JMSQueueConfiguration queueConfig = jmsconfig.getQueueConfigurations().get(0); assertEquals("fullConfigurationQueue", queueConfig.getName()); assertEquals(1, jmsconfig.getTopicConfigurations().size()); TopicConfiguration topicConfig = jmsconfig.getTopicConfigurations().get(0); assertEquals("fullConfigurationTopic", topicConfig.getName()); }
/** * Parse the JMS Configuration XML */ public void parseConfiguration(final Node rootnode) throws Exception { ArrayList<JMSQueueConfiguration> queues = new ArrayList<>(); ArrayList<TopicConfiguration> topics = new ArrayList<>(); Element e = (Element) rootnode; String[] elements = new String[]{QUEUE_NODE_NAME, TOPIC_NODE_NAME}; for (String element : elements) { NodeList children = e.getElementsByTagName(element); for (int i = 0; i < children.getLength(); i++) { Node node = children.item(i); Node keyNode = node.getAttributes().getNamedItem(NAME_ATTR); if (keyNode == null) { ActiveMQJMSServerLogger.LOGGER.jmsConfigMissingKey(node); continue; } if (node.getNodeName().equals(TOPIC_NODE_NAME)) { topics.add(parseTopicConfiguration(node)); } else if (node.getNodeName().equals(QUEUE_NODE_NAME)) { queues.add(parseQueueConfiguration(node)); } } } String domain = XMLConfigurationUtil.getString(e, JMX_DOMAIN_NAME, ActiveMQDefaultConfiguration.getDefaultJmxDomain(), Validators.NO_CHECK); newConfig(queues, topics, domain); }
@POST @Consumes("application/activemq.jms.topic+xml") public Response createJmsTopic(@Context UriInfo uriInfo, Document document) { ActiveMQRestLogger.LOGGER.debug("Handling POST request for \"" + uriInfo.getPath() + "\""); try { TopicConfiguration topic = FileJMSConfiguration.parseTopicConfiguration(document.getDocumentElement()); ActiveMQTopic activeMQTopic = ActiveMQDestination.createTopic(topic.getName()); String topicName = activeMQTopic.getAddress(); ClientSession session = manager.getSessionFactory().createSession(false, false, false); try { ClientSession.AddressQuery query = session.addressQuery(new SimpleString(topicName)); if (!query.isExists()) { session.createAddress(SimpleString.toSimpleString(topicName), RoutingType.MULTICAST, true); } else { throw new WebApplicationException(Response.status(412).type("text/plain").entity("Queue already exists.").build()); } } finally { try { session.close(); } catch (Exception ignored) { } } URI uri = uriInfo.getRequestUriBuilder().path(topicName).build(); return Response.created(uri).build(); } catch (Exception e) { if (e instanceof WebApplicationException) throw (WebApplicationException) e; throw new WebApplicationException(e, Response.serverError().type("text/plain").entity("Failed to create queue.").build()); } }
JMSQueueConfiguration queue = FileJMSConfiguration.parseQueueConfiguration(document.getDocumentElement()); ActiveMQQueue activeMQQueue = ActiveMQDestination.createQueue(queue.getName()); String queueName = activeMQQueue.getAddress();
@POST @Consumes("application/activemq.jms.topic+xml") public Response createJmsTopic(@Context UriInfo uriInfo, Document document) { ActiveMQRestLogger.LOGGER.debug("Handling POST request for \"" + uriInfo.getPath() + "\""); try { TopicConfiguration topic = FileJMSConfiguration.parseTopicConfiguration(document.getDocumentElement()); ActiveMQTopic activeMQTopic = ActiveMQDestination.createTopic(topic.getName()); String topicName = activeMQTopic.getAddress(); ClientSession session = manager.getSessionFactory().createSession(false, false, false); try { ClientSession.AddressQuery query = session.addressQuery(new SimpleString(topicName)); if (!query.isExists()) { session.createAddress(SimpleString.toSimpleString(topicName), RoutingType.MULTICAST, true); } else { throw new WebApplicationException(Response.status(412).type("text/plain").entity("Queue already exists.").build()); } } finally { try { session.close(); } catch (Exception ignored) { } } URI uri = uriInfo.getRequestUriBuilder().path(topicName).build(); return Response.created(uri).build(); } catch (Exception e) { if (e instanceof WebApplicationException) throw (WebApplicationException) e; throw new WebApplicationException(e, Response.serverError().type("text/plain").entity("Failed to create queue.").build()); } }
JMSQueueConfiguration queue = FileJMSConfiguration.parseQueueConfiguration(document.getDocumentElement()); ActiveMQQueue activeMQQueue = ActiveMQDestination.createQueue(queue.getName()); String queueName = activeMQQueue.getAddress();
configuration.setBrokerInstance(new File(brokerInstance)); FileJMSConfiguration jmsConfiguration = new FileJMSConfiguration();
FileJMSConfiguration jmsConfiguration = new FileJMSConfiguration(); for (JMSQueueConfiguration jmsQueueConfig : jmsConfiguration.getQueueConfigurations()) { List<CoreAddressConfiguration> coreAddressConfigurations = configuration.getAddressConfigurations(); coreAddressConfigurations.add(new CoreAddressConfiguration() for (TopicConfiguration topicConfig : jmsConfiguration.getTopicConfigurations()) { List<CoreAddressConfiguration> coreAddressConfigurations = configuration.getAddressConfigurations(); coreAddressConfigurations.add(new CoreAddressConfiguration()
FileJMSConfiguration jmsConfiguration = new FileJMSConfiguration(); FileDeploymentManager jmsDeploymentManager = new FileDeploymentManager(jmsConfigurationFileName); jmsDeploymentManager.addDeployable(jmsConfiguration);
FileJMSConfiguration jmsConfiguration = new FileJMSConfiguration(); FileDeploymentManager jmsDeploymentManager = new FileDeploymentManager(jmsConfigurationFileName); jmsDeploymentManager.addDeployable(jmsConfiguration);
protected FileConfiguration readConfiguration() throws Exception { FileConfiguration fileConfiguration = new FileConfiguration(); if (getBrokerInstance() == null) { final String defaultLocation = "./data"; fileConfiguration = new FileConfiguration(); // These will be the default places in case the file can't be loaded fileConfiguration.setBindingsDirectory(defaultLocation + "/bindings"); fileConfiguration.setJournalDirectory(defaultLocation + "/journal"); fileConfiguration.setLargeMessagesDirectory(defaultLocation + "/largemessages"); fileConfiguration.setPagingDirectory(defaultLocation + "/paging"); fileConfiguration.setBrokerInstance(new File(".")); } else { FileJMSConfiguration jmsConfiguration = new FileJMSConfiguration(); String serverConfiguration = getBrokerDTO().server.getConfigurationURI().toASCIIString(); FileDeploymentManager fileDeploymentManager = new FileDeploymentManager(serverConfiguration); fileDeploymentManager.addDeployable(fileConfiguration).addDeployable(jmsConfiguration); fileDeploymentManager.readConfiguration(); fileConfiguration.setBrokerInstance(new File(getBrokerInstance())); } return fileConfiguration; }
protected FileConfiguration readConfiguration() throws Exception { FileConfiguration fileConfiguration = new FileConfiguration(); if (getBrokerInstance() == null) { final String defaultLocation = "./data"; fileConfiguration = new FileConfiguration(); // These will be the default places in case the file can't be loaded fileConfiguration.setBindingsDirectory(defaultLocation + "/bindings"); fileConfiguration.setJournalDirectory(defaultLocation + "/journal"); fileConfiguration.setLargeMessagesDirectory(defaultLocation + "/largemessages"); fileConfiguration.setPagingDirectory(defaultLocation + "/paging"); fileConfiguration.setBrokerInstance(new File(".")); } else { FileJMSConfiguration jmsConfiguration = new FileJMSConfiguration(); String serverConfiguration = getBrokerDTO().server.getConfigurationURI().toASCIIString(); FileDeploymentManager fileDeploymentManager = new FileDeploymentManager(serverConfiguration); fileDeploymentManager.addDeployable(fileConfiguration).addDeployable(jmsConfiguration); fileDeploymentManager.readConfiguration(); fileConfiguration.setBrokerInstance(new File(getBrokerInstance())); } return fileConfiguration; }
protected ActiveMQServer getActiveMQServer(String brokerConfig) throws Exception { FileConfiguration fc = new FileConfiguration(); FileJMSConfiguration fileConfiguration = new FileJMSConfiguration(); FileDeploymentManager deploymentManager = new FileDeploymentManager(brokerConfig); deploymentManager.addDeployable(fc); deploymentManager.addDeployable(fileConfiguration); deploymentManager.readConfiguration(); ActiveMQJAASSecurityManager sm = new ActiveMQJAASSecurityManager(InVMLoginModule.class.getName(), new SecurityConfiguration()); return addServer(new ActiveMQServerImpl(fc, sm)); }
private ActiveMQServer createServerFromConfig(String configFileName) throws Exception { FileConfiguration fc = new FileConfiguration(); FileJMSConfiguration fileConfiguration = new FileJMSConfiguration(); FileDeploymentManager deploymentManager = new FileDeploymentManager(configFileName); deploymentManager.addDeployable(fc); deploymentManager.addDeployable(fileConfiguration); deploymentManager.readConfiguration(); return addServer(new ActiveMQServerImpl(fc)); }
@Override public EmbeddedJMS start() throws Exception { super.initStart(); if (jmsConfiguration != null) { serverManager = new JMSServerManagerImpl(activeMQServer, jmsConfiguration); } else { FileJMSConfiguration fileConfiguration = new FileJMSConfiguration(); FileDeploymentManager deploymentManager; if (configResourcePath != null) { deploymentManager = new FileDeploymentManager(configResourcePath); } else { deploymentManager = new FileDeploymentManager(); } deploymentManager.addDeployable(fileConfiguration); deploymentManager.readConfiguration(); serverManager = new JMSServerManagerImpl(activeMQServer, fileConfiguration); } if (registry == null) { if (context != null) registry = new JndiBindingRegistry(context); else registry = new MapBindingRegistry(); } serverManager.setRegistry(registry); serverManager.start(); return this; }
protected ActiveMQServer getActiveMQServer(String brokerConfig) throws Exception { FileConfiguration fc = new FileConfiguration(); FileJMSConfiguration fileConfiguration = new FileJMSConfiguration(); FileDeploymentManager deploymentManager = new FileDeploymentManager(brokerConfig); deploymentManager.addDeployable(fc); deploymentManager.addDeployable(fileConfiguration); deploymentManager.readConfiguration(); SecurityConfiguration securityConfiguration = new SecurityConfiguration(); securityConfiguration.addUser("a", "a"); securityConfiguration.addRole("a", "a"); securityConfiguration.addUser("b", "b"); securityConfiguration.addRole("b", "b"); securityConfiguration.addUser("c", "c"); securityConfiguration.addRole("c", "c"); ActiveMQJAASSecurityManager sm = new ActiveMQJAASSecurityManager(InVMLoginModule.class.getName(), securityConfiguration); return addServer(new ActiveMQServerImpl(fc, sm)); }
protected ActiveMQServer getActiveMQServer(String brokerConfig) throws Exception { FileConfiguration fc = new FileConfiguration(); FileJMSConfiguration fileConfiguration = new FileJMSConfiguration(); FileDeploymentManager deploymentManager = new FileDeploymentManager(brokerConfig); deploymentManager.addDeployable(fc); deploymentManager.addDeployable(fileConfiguration); deploymentManager.readConfiguration(); ActiveMQJAASSecurityManager sm = new ActiveMQJAASSecurityManager(InVMLoginModule.class.getName(), new SecurityConfiguration()); recreateDirectory(fc.getBindingsDirectory()); recreateDirectory(fc.getJournalDirectory()); recreateDirectory(fc.getPagingDirectory()); recreateDirectory(fc.getLargeMessagesDirectory()); return addServer(new ActiveMQServerImpl(fc, sm)); } }