|
ActiveMQ example source code file (BrokerMojo.java)
The ActiveMQ BrokerMojo.java source code/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.activemq.maven; /** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.util.Properties; import org.apache.activemq.broker.BrokerFactory; import org.apache.activemq.broker.BrokerService; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.project.MavenProject; /** * Goal which starts an activemq broker. * * @goal run * @phase process-sources */ public class BrokerMojo extends AbstractMojo { /** * The maven project. * * @parameter expression="${project}" * @required * @readonly */ protected MavenProject project; /** * The broker configuration uri The list of currently supported URI syntaxes * is described <a * href="http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html">here</a> * * @parameter expression="${configUri}" * default-value="broker:(tcp://localhost:61616)?useJmx=false&persistent=false" * @required */ private String configUri; /** * Indicates whether to fork the broker, useful for integration tests. * * @parameter expression="${fork}" default-value="false" */ private boolean fork; /** * System properties to add * * @parameter expression="${systemProperties}" */ private Properties systemProperties; public void execute() throws MojoExecutionException { try { setSystemProperties(); getLog().info("Loading broker configUri: " + configUri); final BrokerService broker = BrokerFactory.createBroker(configUri); if (fork) { new Thread(new Runnable() { public void run() { try { broker.start(); waitForShutdown(broker); } catch (Exception e) { e.printStackTrace(); } } }).start(); } else { broker.start(); waitForShutdown(broker); } } catch (Exception e) { throw new MojoExecutionException("Failed to start ActiveMQ Broker", e); } } /** * Wait for a shutdown invocation elsewhere * * @throws Exception */ protected void waitForShutdown(BrokerService broker) throws Exception { final boolean[] shutdown = new boolean[] { false }; Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { synchronized (shutdown) { shutdown[0] = true; shutdown.notify(); } } }); // Wait for any shutdown event synchronized (shutdown) { while (!shutdown[0]) { try { shutdown.wait(); } catch (InterruptedException e) { } } } // Stop broker broker.stop(); } /** * Set system properties */ protected void setSystemProperties() { // Set the default properties System.setProperty("activemq.base", project.getBuild().getDirectory() + "/"); System.setProperty("activemq.home", project.getBuild().getDirectory() + "/"); System.setProperty("org.apache.activemq.UseDedicatedTaskRunner", "true"); System.setProperty("org.apache.activemq.default.directory.prefix", project.getBuild().getDirectory() + "/"); System.setProperty("derby.system.home", project.getBuild().getDirectory() + "/"); System.setProperty("derby.storage.fileSyncTransactionLog", "true"); // Overwrite any custom properties System.getProperties().putAll(systemProperties); } } Other ActiveMQ examples (source code examples)Here is a short list of links related to this ActiveMQ BrokerMojo.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.