Fixes ACTIVEMQ6-99: Support installing as a windows service
This commit is contained in:
parent
3b82dc52ed
commit
e12388ff44
|
@ -61,6 +61,14 @@
|
||||||
<groupId>io.airlift</groupId>
|
<groupId>io.airlift</groupId>
|
||||||
<artifactId>airline</artifactId>
|
<artifactId>airline</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.winsw</groupId>
|
||||||
|
<artifactId>winsw</artifactId>
|
||||||
|
<version>1.9</version>
|
||||||
|
<classifier>bin</classifier>
|
||||||
|
<type>exe</type>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
|
@ -102,6 +110,36 @@
|
||||||
</includes>
|
</includes>
|
||||||
</resource>
|
</resource>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-dependency-plugin</artifactId>
|
||||||
|
<version>2.2</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>unpack</id>
|
||||||
|
<phase>process-resources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>copy</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<artifactItems>
|
||||||
|
<artifactItem>
|
||||||
|
<groupId>com.sun.winsw</groupId>
|
||||||
|
<artifactId>winsw</artifactId>
|
||||||
|
<version>1.9</version>
|
||||||
|
<classifier>bin</classifier>
|
||||||
|
<type>exe</type>
|
||||||
|
<outputDirectory>${basedir}/target/classes/org/apache/activemq/cli/commands/bin</outputDirectory>
|
||||||
|
<destFileName>activemq-service.exe</destFileName>
|
||||||
|
</artifactItem>
|
||||||
|
</artifactItems>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -97,24 +97,7 @@ public class Create implements Action
|
||||||
host = directory.getName();
|
host = directory.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
new File(directory, "bin").mkdirs();
|
|
||||||
new File(directory, "etc").mkdirs();
|
|
||||||
new File(directory, "log").mkdirs();
|
|
||||||
new File(directory, "tmp").mkdirs();
|
|
||||||
new File(directory, "data").mkdirs();
|
|
||||||
|
|
||||||
write("bin/activemq", null, true);
|
|
||||||
makeExec("bin/activemq");
|
|
||||||
|
|
||||||
write("bin/activemq.cmd", null, false);
|
|
||||||
write("bin/activemq-service", null, true);
|
|
||||||
makeExec("bin/activemq-service");
|
|
||||||
|
|
||||||
write("etc/logging.properties", null, false);
|
|
||||||
write("etc/bootstrap.xml", null, false);
|
|
||||||
|
|
||||||
HashMap<String, String> filters = new HashMap<String, String>();
|
HashMap<String, String> filters = new HashMap<String, String>();
|
||||||
|
|
||||||
String replicatedSettings = "";
|
String replicatedSettings = "";
|
||||||
if (replicated)
|
if (replicated)
|
||||||
{
|
{
|
||||||
|
@ -149,15 +132,37 @@ public class Create implements Action
|
||||||
filters.put("${activemq.instance}", path(directory, false));
|
filters.put("${activemq.instance}", path(directory, false));
|
||||||
filters.put("${java.home}", path(System.getProperty("java.home"), false));
|
filters.put("${java.home}", path(System.getProperty("java.home"), false));
|
||||||
|
|
||||||
|
new File(directory, "bin").mkdirs();
|
||||||
|
new File(directory, "etc").mkdirs();
|
||||||
|
new File(directory, "log").mkdirs();
|
||||||
|
new File(directory, "tmp").mkdirs();
|
||||||
|
new File(directory, "data").mkdirs();
|
||||||
|
|
||||||
|
|
||||||
|
if (IS_WINDOWS)
|
||||||
|
{
|
||||||
|
write("bin/activemq.cmd", null, false);
|
||||||
|
write("bin/activemq-service.exe");
|
||||||
|
write("bin/activemq-service.xml", filters, false);
|
||||||
|
write("etc/activemq.profile.cmd", filters, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!IS_WINDOWS || IS_CYGWIN)
|
||||||
|
{
|
||||||
|
write("bin/activemq", null, true);
|
||||||
|
makeExec("bin/activemq");
|
||||||
|
write("bin/activemq-service", null, true);
|
||||||
|
makeExec("bin/activemq-service");
|
||||||
write("etc/activemq.profile", filters, true);
|
write("etc/activemq.profile", filters, true);
|
||||||
makeExec("etc/activemq.profile");
|
makeExec("etc/activemq.profile");
|
||||||
|
}
|
||||||
|
|
||||||
write("etc/activemq.profile.cmd", filters, false);
|
write("etc/logging.properties", null, false);
|
||||||
|
write("etc/bootstrap.xml", null, false);
|
||||||
write("etc/activemq-configuration.xml", filters, false);
|
write("etc/activemq-configuration.xml", filters, false);
|
||||||
write("etc/activemq-roles.properties", null, false);
|
write("etc/activemq-roles.properties", null, false);
|
||||||
write("etc/activemq-users.properties", null, false);
|
write("etc/activemq-users.properties", null, false);
|
||||||
|
|
||||||
|
|
||||||
context.out.println("");
|
context.out.println("");
|
||||||
context.out.println("You can now start the broker by executing: ");
|
context.out.println("You can now start the broker by executing: ");
|
||||||
context.out.println("");
|
context.out.println("");
|
||||||
|
@ -189,15 +194,16 @@ public class Create implements Action
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
// if ( IS_WINDOWS ) {
|
if (IS_WINDOWS)
|
||||||
//
|
{
|
||||||
// context.out.println("Or you can setup the broker as Windows service and run it in the background:");
|
|
||||||
// context.out.println("");
|
context.out.println("Or you can setup the broker as Windows service and run it in the background:");
|
||||||
// context.out.println(String.format(" \"%s\" install", path(service,true)));
|
context.out.println("");
|
||||||
// context.out.println(String.format(" \"%s\" start", path(service, true)));
|
context.out.println(String.format(" \"%s\" install", path(service, true)));
|
||||||
// context.out.println("");
|
context.out.println(String.format(" \"%s\" start", path(service, true)));
|
||||||
//
|
context.out.println("");
|
||||||
// }
|
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -282,8 +288,9 @@ public class Create implements Action
|
||||||
return new String(out.toByteArray(), "UTF-8");
|
return new String(out.toByteArray(), "UTF-8");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void write(String source, File target) throws IOException
|
private void write(String source) throws IOException
|
||||||
{
|
{
|
||||||
|
File target = new File(directory, source);
|
||||||
if (target.exists() && !force)
|
if (target.exists() && !force)
|
||||||
{
|
{
|
||||||
throw new RuntimeException(String.format("The file '%s' already exists. Use --force to overwrite.", target));
|
throw new RuntimeException(String.format("The file '%s' already exists. Use --force to overwrite.", target));
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
<!--
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
<service>
|
||||||
|
<id>activemq-${host}</id>
|
||||||
|
<name>ActiveMQ: ${host}</name>
|
||||||
|
<description>Apache ActiveMQ is a reliable messaging broker</description>
|
||||||
|
|
||||||
|
<logpath>${activemq.instance}\log</logpath>
|
||||||
|
<logmode>roll</logmode>
|
||||||
|
|
||||||
|
<executable>"${java.home}\bin\java.exe"</executable>
|
||||||
|
<argument>-XX:+UseParallelGC</argument>
|
||||||
|
<argument>-XX:+AggressiveOpts</argument>
|
||||||
|
<argument>-XX:+UseFastAccessorMethods</argument>
|
||||||
|
<argument>-Xms512M</argument>
|
||||||
|
<argument>-Xmx1024M</argument>
|
||||||
|
|
||||||
|
<!-- Cluster Properties: Used to pass arguments to ActiveMQ which can be referenced in activemq-configuration.xml
|
||||||
|
<argument>-Dactivemq.remoting.default.port=61617</argument>
|
||||||
|
<argument>-Dactivemq.remoting.amqp.port=5673</argument>
|
||||||
|
<argument>-Dactivemq.remoting.stomp.port=61614</argument>
|
||||||
|
<argument>-Dactivemq.remoting.hornetq.port=5446</argument>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<argument>-classpath</argument>
|
||||||
|
<argument>"${activemq.home}\lib\activemq-boot.jar"</argument>
|
||||||
|
<argument>"-Dactivemq.home=${activemq.home}"</argument>
|
||||||
|
<argument>"-Dactivemq.instance=${activemq.instance}"</argument>
|
||||||
|
<argument>"-Ddata.dir=${activemq.instance}/data"</argument>
|
||||||
|
<argument>-Djava.util.logging.manager=org.jboss.logmanager.LogManager</argument>
|
||||||
|
<argument>"-Dlogging.configuration=file:${activemq.instance}\etc\logging.properties"</argument>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Debug args: Uncomment to enable debug
|
||||||
|
<argument>-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005</argument>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<argument>org.apache.activemq.boot.ActiveMQ</argument>
|
||||||
|
|
||||||
|
<argument>run</argument>
|
||||||
|
|
||||||
|
</service>
|
Loading…
Reference in New Issue