mirror of https://github.com/apache/activemq.git
https://issues.apache.org/jira/browse/AMQ-4034 - osgi, remove create-broker and destory-broker commands
git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@1441470 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
3527a4cfa0
commit
081b823c2d
|
@ -1,161 +0,0 @@
|
|||
/*
|
||||
* 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.karaf.commands;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PrintStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Scanner;
|
||||
|
||||
import org.apache.felix.gogo.commands.Argument;
|
||||
import org.apache.felix.gogo.commands.Command;
|
||||
import org.apache.felix.gogo.commands.Option;
|
||||
import org.apache.karaf.shell.console.OsgiCommandSupport;
|
||||
|
||||
/**
|
||||
* @version $Rev: 960482 $ $Date: 2010-07-05 10:28:33 +0200 (Mon, 05 Jul 2010) $
|
||||
*/
|
||||
@Command(scope="activemq", name="create-broker", description="Creates a broker instance.")
|
||||
public class CreateBrokerCommand extends OsgiCommandSupport {
|
||||
|
||||
@Argument(name = "name", description = "The name of the broker (defaults to localhost).")
|
||||
private String name = "localhost";
|
||||
@Option(name = "-t", aliases = {"--type"}, description = "type of configuration to be used: spring or blueprint (defaults to spring)")
|
||||
private String type = "spring";
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see
|
||||
* org.apache.karaf.shell.console.OsgiCommandSupport#doExecute()
|
||||
*/
|
||||
protected Object doExecute() throws Exception {
|
||||
|
||||
try {
|
||||
String name = getName();
|
||||
File base = new File(System.getProperty("karaf.base"));
|
||||
File deploy = new File(base, "deploy");
|
||||
|
||||
HashMap<String, String> props = new HashMap<String, String>();
|
||||
props.put("${name}", name);
|
||||
|
||||
mkdir(deploy);
|
||||
File configFile = new File(deploy, name + "-broker.xml");
|
||||
|
||||
if (!type.equalsIgnoreCase("spring") && !type.equalsIgnoreCase("blueprint")) {
|
||||
System.out.println("@|green Unknown type '" + type + "' Using spring by default");
|
||||
type = "spring";
|
||||
}
|
||||
|
||||
copyFilteredResourceTo(configFile, type.toLowerCase() + ".xml", props);
|
||||
|
||||
System.out.println("");
|
||||
System.out.println("Default ActiveMQ Broker (" + name + ") configuration file created at: "
|
||||
+ configFile.getPath());
|
||||
System.out.println("Please review the configuration and modify to suite your needs. ");
|
||||
System.out.println("");
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw e;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
private void copyFilteredResourceTo(File outFile, String resource, HashMap<String, String> props)
|
||||
throws Exception {
|
||||
if (!outFile.exists()) {
|
||||
System.out.println("Creating file: @|green " + outFile.getPath() + "|");
|
||||
InputStream is = CreateBrokerCommand.class.getResourceAsStream(resource);
|
||||
try {
|
||||
// Read it line at a time so that we can use the platform line
|
||||
// ending when we write it out.
|
||||
PrintStream out = new PrintStream(new FileOutputStream(outFile));
|
||||
try {
|
||||
Scanner scanner = new Scanner(is);
|
||||
while (scanner.hasNextLine()) {
|
||||
String line = scanner.nextLine();
|
||||
line = filter(line, props);
|
||||
out.println(line);
|
||||
}
|
||||
} finally {
|
||||
safeClose(out);
|
||||
}
|
||||
} finally {
|
||||
safeClose(is);
|
||||
}
|
||||
} else {
|
||||
System.out.println("@|red File already exists|. Move it out of the way if you want it re-created: "
|
||||
+ outFile.getPath() + "");
|
||||
}
|
||||
}
|
||||
|
||||
private void safeClose(InputStream is) throws IOException {
|
||||
if (is == null)
|
||||
return;
|
||||
try {
|
||||
is.close();
|
||||
} catch (Throwable ignore) {
|
||||
}
|
||||
}
|
||||
|
||||
private void safeClose(OutputStream is) throws IOException {
|
||||
if (is == null)
|
||||
return;
|
||||
try {
|
||||
is.close();
|
||||
} catch (Throwable ignore) {
|
||||
}
|
||||
}
|
||||
|
||||
private String filter(String line, HashMap<String, String> props) {
|
||||
for (Map.Entry<String, String> i : props.entrySet()) {
|
||||
int p1;
|
||||
while ((p1 = line.indexOf(i.getKey())) >= 0) {
|
||||
String l1 = line.substring(0, p1);
|
||||
String l2 = line.substring(p1 + i.getKey().length());
|
||||
line = l1 + i.getValue() + l2;
|
||||
}
|
||||
}
|
||||
return line;
|
||||
}
|
||||
|
||||
private void mkdir(File file) {
|
||||
if (!file.exists()) {
|
||||
System.out.println("Creating missing directory: @|green " + file.getPath() + "|");
|
||||
file.mkdirs();
|
||||
}
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
if (name == null) {
|
||||
File base = new File(System.getProperty("karaf.base"));
|
||||
name = base.getName();
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,68 +0,0 @@
|
|||
/*
|
||||
* 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.karaf.commands;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.apache.felix.gogo.commands.Option;
|
||||
import org.apache.felix.gogo.commands.Command;
|
||||
import org.apache.karaf.shell.console.OsgiCommandSupport;
|
||||
|
||||
/**
|
||||
* @version $Rev: 960482 $ $Date: 2010-07-05 10:28:33 +0200 (Mon, 05 Jul 2010) $
|
||||
*/
|
||||
@Command(scope="activemq", name="destroy-broker", description="Destory a broker instance.")
|
||||
public class DestroyBrokerCommand extends OsgiCommandSupport {
|
||||
|
||||
@Option(name = "-n", aliases = {"--name"}, description = "The name of the broker (defaults to localhost).")
|
||||
private String name = "localhost";
|
||||
|
||||
protected Object doExecute() throws Exception {
|
||||
|
||||
try {
|
||||
String name = getName();
|
||||
File base = new File(System.getProperty("karaf.base"));
|
||||
File deploy = new File(base, "deploy");
|
||||
File configFile = new File(deploy, name + "-broker.xml");
|
||||
|
||||
configFile.delete();
|
||||
|
||||
System.out.println("");
|
||||
System.out.println("Default ActiveMQ Broker (" + name + ") configuration file created at: "
|
||||
+ configFile.getPath() + " removed.");
|
||||
System.out.println("");
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw e;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
if (name == null) {
|
||||
File base = new File(System.getProperty("karaf.base"));
|
||||
name = base.getName();
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
|
@ -19,18 +19,6 @@
|
|||
-->
|
||||
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
|
||||
xmlns:shell="http://karaf.apache.org/xmlns/shell/v1.0.0">
|
||||
|
||||
<shell:command-bundle>
|
||||
|
||||
<shell:command name="activemq/create-broker">
|
||||
<shell:action class="org.apache.activemq.karaf.commands.CreateBrokerCommand"/>
|
||||
</shell:command>
|
||||
|
||||
<shell:command name="activemq/destroy-broker">
|
||||
<shell:action class="org.apache.activemq.karaf.commands.DestroyBrokerCommand"/>
|
||||
</shell:command>
|
||||
|
||||
</shell:command-bundle>
|
||||
|
||||
<!-- ActiveMQ List Command -->
|
||||
<bean id="listcommand" class="org.apache.activemq.karaf.commands.ActiveMQCommand">
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
##
|
||||
## 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.
|
||||
##
|
||||
|
||||
##
|
||||
## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
|
||||
##
|
||||
|
||||
command.description=Creates a broker instance.
|
||||
|
||||
command.manual=\
|
||||
TODO: date manual
|
|
@ -1,27 +0,0 @@
|
|||
##
|
||||
## 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.
|
||||
##
|
||||
|
||||
##
|
||||
## $Rev: 703511 $ $Date: 2008-10-10 18:07:36 +0200 (Fri, 10 Oct 2008) $
|
||||
##
|
||||
|
||||
command.description=Remove a broker instance.
|
||||
|
||||
command.manual=\
|
||||
TODO: date manual
|
|
@ -1,130 +0,0 @@
|
|||
<!--
|
||||
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.
|
||||
-->
|
||||
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
|
||||
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
|
||||
xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0"
|
||||
xmlns:amq="http://activemq.apache.org/schema/core">
|
||||
|
||||
<!-- Allows us to use system properties as variables in this configuration file -->
|
||||
<ext:property-placeholder />
|
||||
|
||||
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="${name}" dataDirectory="${karaf.data}/activemq/${name}" useShutdownHook="false" startAsync="true">
|
||||
|
||||
<!--
|
||||
For better performances use VM cursor and small memory limit.
|
||||
For more information, see:
|
||||
|
||||
http://activemq.apache.org/message-cursors.html
|
||||
|
||||
Also, if your producer is "hanging", it's probably due to producer flow control.
|
||||
For more information, see:
|
||||
http://activemq.apache.org/producer-flow-control.html
|
||||
-->
|
||||
|
||||
<destinationPolicy>
|
||||
<policyMap>
|
||||
<policyEntries>
|
||||
<policyEntry topic=">" producerFlowControl="true" memoryLimit="1mb">
|
||||
<pendingSubscriberPolicy>
|
||||
<vmCursor />
|
||||
</pendingSubscriberPolicy>
|
||||
</policyEntry>
|
||||
<policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb">
|
||||
<!-- Use VM cursor for better latency
|
||||
For more information, see:
|
||||
|
||||
http://activemq.apache.org/message-cursors.html
|
||||
|
||||
<pendingQueuePolicy>
|
||||
<vmQueueCursor/>
|
||||
</pendingQueuePolicy>
|
||||
-->
|
||||
</policyEntry>
|
||||
</policyEntries>
|
||||
</policyMap>
|
||||
</destinationPolicy>
|
||||
|
||||
<!-- Use the following to configure how ActiveMQ is exposed in JMX -->
|
||||
<managementContext>
|
||||
<managementContext createConnector="false"/>
|
||||
</managementContext>
|
||||
|
||||
<!--
|
||||
Configure message persistence for the broker. The default persistence
|
||||
mechanism is the KahaDB store (identified by the kahaDB tag).
|
||||
For more information, see:
|
||||
|
||||
http://activemq.apache.org/persistence.html
|
||||
-->
|
||||
<persistenceAdapter>
|
||||
<kahaDB directory="${karaf.data}/activemq/${name}/kahadb"/>
|
||||
</persistenceAdapter>
|
||||
|
||||
<!--
|
||||
The systemUsage controls the maximum amount of space the broker will
|
||||
use before slowing down producers. For more information, see:
|
||||
|
||||
http://activemq.apache.org/producer-flow-control.html
|
||||
|
||||
<systemUsage>
|
||||
<systemUsage>
|
||||
<memoryUsage>
|
||||
<memoryUsage limit="20 mb"/>
|
||||
</memoryUsage>
|
||||
<storeUsage>
|
||||
<storeUsage limit="1 gb" name="foo"/>
|
||||
</storeUsage>
|
||||
<tempUsage>
|
||||
<tempUsage limit="100 mb"/>
|
||||
</tempUsage>
|
||||
</systemUsage>
|
||||
</systemUsage>
|
||||
-->
|
||||
|
||||
<!-- The transport connectors ActiveMQ will listen to -->
|
||||
<transportConnectors>
|
||||
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
|
||||
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613"/>
|
||||
</transportConnectors>
|
||||
|
||||
</broker>
|
||||
|
||||
<bean id="activemqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
|
||||
<property name="brokerURL" value="tcp://0.0.0.0:61616" />
|
||||
</bean>
|
||||
|
||||
<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
|
||||
<property name="maxConnections" value="8" />
|
||||
<property name="connectionFactory" ref="activemqConnectionFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="resourceManager" class="org.apache.activemq.pool.ActiveMQResourceManager" init-method="recoverResource">
|
||||
<property name="transactionManager" ref="transactionManager" />
|
||||
<property name="connectionFactory" ref="activemqConnectionFactory" />
|
||||
<property name="resourceName" value="activemq.${name}" />
|
||||
</bean>
|
||||
|
||||
<reference id="transactionManager" interface="javax.transaction.TransactionManager" />
|
||||
|
||||
<service ref="pooledConnectionFactory" interface="javax.jms.ConnectionFactory">
|
||||
<service-properties>
|
||||
<entry key="name" value="localhost"/>
|
||||
</service-properties>
|
||||
</service>
|
||||
|
||||
</blueprint>
|
||||
|
Loading…
Reference in New Issue