Repository: karaf Updated Branches: refs/heads/master 33674bd39 -> b60231147
[KARAF-3025] Add an instance:restart command Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/b6023114 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/b6023114 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/b6023114 Branch: refs/heads/master Commit: b602311476a92f7a9cd4e720e94e1b9fe95cd5bb Parents: a8df35e Author: Guillaume Nodet <[email protected]> Authored: Fri Jun 6 12:48:26 2014 +0200 Committer: Guillaume Nodet <[email protected]> Committed: Fri Jun 6 12:48:40 2014 +0200 ---------------------------------------------------------------------- .../filtered-resources/resources/bin/instance | 17 +- .../resources/bin/instance.bat | 6 +- .../karaf/instance/command/RestartCommand.java | 83 ++++++++ .../apache/karaf/instance/core/Instance.java | 2 + .../instance/core/internal/InstanceImpl.java | 4 + .../core/internal/InstanceServiceImpl.java | 193 +++++++++++++------ .../org/apache/karaf/instance/main/Execute.java | 2 + 7 files changed, 236 insertions(+), 71 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/b6023114/assemblies/features/framework/src/main/filtered-resources/resources/bin/instance ---------------------------------------------------------------------- diff --git a/assemblies/features/framework/src/main/filtered-resources/resources/bin/instance b/assemblies/features/framework/src/main/filtered-resources/resources/bin/instance index 2c3a8a8..eaf71c5 100755 --- a/assemblies/features/framework/src/main/filtered-resources/resources/bin/instance +++ b/assemblies/features/framework/src/main/filtered-resources/resources/bin/instance @@ -275,15 +275,12 @@ setupDefaults() { fi fi - # Add the jars in the lib dir - for file in "$KARAF_HOME"/lib/*.jar - do - if [ -z "$CLASSPATH" ]; then - CLASSPATH="$file" - else - CLASSPATH="$CLASSPATH:$file" - fi - done + # Setup classpath + CLASSPATH="$KARAF_HOME/system/org/apache/karaf/instance/org.apache.karaf.instance.core/${project.version}/org.apache.karaf.shell.instance-${project.version}.jar" + CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/apache/karaf/shell/org.apache.karaf.shell.core/${project.version}/org.apache.karaf.shell.core-${project.version}.jar" + CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/ops4j/pax/logging/pax-logging-api/${pax.logging.version}/pax-logging-api-${pax.logging.version}.jar" + CLASSPATH="$CLASSPATH:$KARAF_HOME/system/jline/jline/${jline.version}/jline-${jline.version}.jar" + DEFAULT_JAVA_DEBUG_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005" ## @@ -331,8 +328,6 @@ init() { run() { - CLASSPATH="${KARAF_HOME}/system/org/apache/karaf/instance/org.apache.karaf.instance.command/${project.version}/org.apache.karaf.instance.command-${project.version}.jar:${KARAF_HOME}/system/org/apache/karaf/instance/org.apache.karaf.instance.core/${project.version}/org.apache.karaf.instance.core-${project.version}.jar:${KARAF_HOME}/system/org/apache/karaf/shell/org.apache.karaf.shell.console/${project.version}/org.apache.karaf.shell.console-${project.version}.jar:${KARAF_HOME}/system/org/apache/karaf/shell/org.apache.karaf.shell.table/${project.version}/org.apache.karaf.shell.table-${project.version}.jar:${KARAF_HOME}/system/org/apache/aries/blueprint/org.apache.aries.blueprint.api/${aries.blueprint.api.version}/org.apache.aries.blueprint.api-${aries.blueprint.api.version}.jar:${KARAF_HOME}/system/org/apache/aries/blueprint/org.apache.aries.blueprint.core/${aries.blueprint.core.version}/org.apache.aries.blueprint.core-${aries.blueprint.core.version}.jar:${KARAF_HOME}/system/org/a pache/aries/blueprint/org.apache.aries.blueprint.cm/${aries.blueprint.cm.version}/org.apache.aries.blueprint.cm-${aries.blueprint.cm.version}.jar:${KARAF_HOME}/system/org/ops4j/pax/logging/pax-logging-api/${pax.logging.version}/pax-logging-api-${pax.logging.version}.jar:${KARAF_HOME}/system/org/apache/felix/org.apache.felix.framework/${felix.framework.version}/org.apache.felix.framework-${felix.framework.version}.jar:${KARAF_HOME}/system/jline/jline/${jline.version}/jline-${jline.version}.jar:$CLASSPATH" - if $cygwin; then KARAF_HOME=`cygpath --path --windows "$KARAF_HOME"` KARAF_BASE=`cygpath --path --windows "$KARAF_BASE"` http://git-wip-us.apache.org/repos/asf/karaf/blob/b6023114/assemblies/features/framework/src/main/filtered-resources/resources/bin/instance.bat ---------------------------------------------------------------------- diff --git a/assemblies/features/framework/src/main/filtered-resources/resources/bin/instance.bat b/assemblies/features/framework/src/main/filtered-resources/resources/bin/instance.bat index bb2a911..fbfe266 100644 --- a/assemblies/features/framework/src/main/filtered-resources/resources/bin/instance.bat +++ b/assemblies/features/framework/src/main/filtered-resources/resources/bin/instance.bat @@ -139,7 +139,11 @@ goto :EOF :CLASSPATH_END -set CLASSPATH=%KARAF_HOME%\system\org\apache\karaf\instance\org.apache.karaf.instance.command\${project.version}\org.apache.karaf.instance.command-${project.version}.jar;%KARAF_HOME%\system\org\apache\karaf\instance\org.apache.karaf.instance.core\${project.version}\org.apache.karaf.instance.core-${project.version}.jar;%KARAF_HOME%\system\org\apache\karaf\shell\org.apache.karaf.shell.console\${project.version}\org.apache.karaf.shell.console-${project.version}.jar;%KARAF_HOME%\system\org\apache\karaf\shell\org.apache.karaf.shell.table\${project.version}\org.apache.karaf.shell.table-${project.version}.jar;%KARAF_HOME%\system\org\apache\aries\blueprint\org.apache.aries.blueprint.api\${aries.blueprint.api.version}\org.apache.aries.blueprint.api-${aries.blueprint.api.version}.jar;%KARAF_HOME%\system\org\apache\aries\blueprint\org.apache.aries.blueprint.core\${aries.blueprint.core.version}\org.apache.aries.blueprint.core-${aries.blueprint.core.version}.jar;%KARAF_HOME%\system\org\apache\ar ies\blueprint\org.apache.aries.blueprint.cm\${aries.blueprint.cm.version}\org.apache.aries.blueprint.cm-${aries.blueprint.cm.version}.jar;%KARAF_HOME%\system\org\ops4j\pax\logging\pax-logging-api\${pax.logging.version}\pax-logging-api-${pax.logging.version}.jar;%KARAF_HOME%\system\org\apache\felix\org.apache.felix.framework\${felix.framework.version}\org.apache.felix.framework-${felix.framework.version}.jar;%KARAF_HOME%\system\jline\jline\${jline.version}\jline-${jline.version}.jar;%CLASSPATH% +set CLASSPATH=%KARAF_HOME%\system\org\apache\karaf\instance\org.apache.karaf.instance.core\${project.version}\org.apache.karaf.instance.core-${project.version}.jar +set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\org\apache\karaf\shell\org.apache.karaf.shell.core\${project.version}\org.apache.karaf.shell.core-${project.version}.jar +set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\org\ops4j\pax\logging\pax-logging-api\${pax.logging.version}\pax-logging-api-${pax.logging.version}.jar +set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\system\jline\jline\${jline.version}\jline-${jline.version}.jar + :EXECUTE if "%SHIFT%" == "true" SET ARGS=%2 %3 %4 %5 %6 %7 %8 http://git-wip-us.apache.org/repos/asf/karaf/blob/b6023114/instance/src/main/java/org/apache/karaf/instance/command/RestartCommand.java ---------------------------------------------------------------------- diff --git a/instance/src/main/java/org/apache/karaf/instance/command/RestartCommand.java b/instance/src/main/java/org/apache/karaf/instance/command/RestartCommand.java new file mode 100644 index 0000000..7a22348 --- /dev/null +++ b/instance/src/main/java/org/apache/karaf/instance/command/RestartCommand.java @@ -0,0 +1,83 @@ +/* + * 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.karaf.instance.command; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.karaf.instance.command.completers.InstanceCompleter; +import org.apache.karaf.instance.core.Instance; +import org.apache.karaf.shell.api.action.Argument; +import org.apache.karaf.shell.api.action.Command; +import org.apache.karaf.shell.api.action.Completion; +import org.apache.karaf.shell.api.action.Option; +import org.apache.karaf.shell.api.action.lifecycle.Service; +import org.apache.karaf.shell.support.MultiException; + +@Command(scope = "instance", name = "restart", description = "Restart an existing container instance.") +@Service +public class RestartCommand extends InstanceCommandSupport { + + @Option(name = "-d", aliases = { "--debug"}, description = "Start the instance in debug mode", required = false, multiValued = false) + private boolean debug; + + @Option(name = "-o", aliases = { "--java-opts"}, description = "Java options when launching the instance", required = false, multiValued = false) + private String javaOpts; + + @Argument(index = 0, name = "name", description = "The name of the container instance", required = true, multiValued = true) + @Completion(InstanceCompleter.class) + private List<String> instances = null; + + static final String DEBUG_OPTS = " -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"; + static final String DEFAULT_OPTS = "-server -Xmx512M -Dcom.sun.management.jmxremote"; + + protected Object doExecute() throws Exception { + MultiException exception = new MultiException("Error starting instance(s)"); + List<Instance> toWaitFor = new ArrayList<>(); + for (Instance instance : getMatchingInstances(instances)) { + try { + String opts = javaOpts; + if (opts == null) { + opts = instance.getJavaOpts(); + } + if (opts == null) { + opts = DEFAULT_OPTS; + } + if (debug) { + opts += DEBUG_OPTS; + } + instance.restart(opts); + } catch (Exception e) { + exception.addException(e); + } + } + exception.throwIfExceptions(); + while (true) { + boolean allStarted = true; + for (Instance child : toWaitFor) { + allStarted &= Instance.STARTED.equals(child.getState()); + } + if (allStarted) { + break; + } else { + Thread.sleep(500); + } + } + return null; + } + +} http://git-wip-us.apache.org/repos/asf/karaf/blob/b6023114/instance/src/main/java/org/apache/karaf/instance/core/Instance.java ---------------------------------------------------------------------- diff --git a/instance/src/main/java/org/apache/karaf/instance/core/Instance.java b/instance/src/main/java/org/apache/karaf/instance/core/Instance.java index 5e78bb2..ee1102d 100644 --- a/instance/src/main/java/org/apache/karaf/instance/core/Instance.java +++ b/instance/src/main/java/org/apache/karaf/instance/core/Instance.java @@ -53,6 +53,8 @@ public interface Instance { void changeJavaOpts(String javaOpts) throws Exception; + void restart(String javaOpts) throws Exception; + void start(String javaOpts) throws Exception; void stop() throws Exception; http://git-wip-us.apache.org/repos/asf/karaf/blob/b6023114/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceImpl.java ---------------------------------------------------------------------- diff --git a/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceImpl.java b/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceImpl.java index edc4ec5..95c1ef2 100644 --- a/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceImpl.java +++ b/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceImpl.java @@ -88,6 +88,10 @@ public class InstanceImpl implements Instance { service.changeInstanceJavaOpts(name, javaOpts); } + public void restart(String javaOpts) throws Exception { + service.restartInstance(name, javaOpts); + } + public void start(String javaOpts) throws Exception { service.startInstance(name, javaOpts); } http://git-wip-us.apache.org/repos/asf/karaf/blob/b6023114/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java ---------------------------------------------------------------------- diff --git a/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java b/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java index ca57c80..87b02cc 100644 --- a/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java +++ b/instance/src/main/java/org/apache/karaf/instance/core/internal/InstanceServiceImpl.java @@ -19,6 +19,7 @@ package org.apache.karaf.instance.core.internal; import org.apache.karaf.instance.core.Instance; import org.apache.karaf.instance.core.InstanceService; import org.apache.karaf.instance.core.InstanceSettings; +import org.apache.karaf.instance.main.Execute; import org.apache.karaf.jpm.Process; import org.apache.karaf.jpm.impl.ProcessBuilderFactoryImpl; import org.apache.karaf.jpm.impl.ScriptUtils; @@ -49,6 +50,7 @@ import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Scanner; +import java.util.TreeMap; public class InstanceServiceImpl implements InstanceService { @@ -410,71 +412,144 @@ public class InstanceServiceImpl implements InstanceService { if (instance.pid != 0) { throw new IllegalStateException("Instance already started"); } - String opts = javaOpts; - if (opts == null || opts.length() == 0) { - opts = instance.opts; - } - if (opts == null || opts.length() == 0) { - opts = DEFAULT_JAVA_OPTS; - } + doStart(instance, name, javaOpts); + return null; + } + + }); + } + + private void doStart(InstanceState instance, String name, String javaOpts) throws IOException { + String opts = javaOpts; + if (opts == null || opts.length() == 0) { + opts = instance.opts; + } + if (opts == null || opts.length() == 0) { + opts = DEFAULT_JAVA_OPTS; + } + + // fallback and read karafOpts from KARAF_OPTS environment if no System property present + String karafOptsEnv = System.getenv("KARAF_OPTS"); + String karafOpts = System.getProperty("karaf.opts", karafOptsEnv != null ? karafOptsEnv : ""); - // fallback and read karafOpts from KARAF_OPTS environment if no System property present - String karafOptsEnv = System.getenv("KARAF_OPTS"); - String karafOpts = System.getProperty("karaf.opts", karafOptsEnv != null ? karafOptsEnv : ""); - - String location = instance.loc; - - File libDir = new File(System.getProperty("karaf.home"), "lib"); - File childLibDir = new File(location, "lib"); - - StringBuilder classpath = classpathFromLibDir(libDir); - StringBuilder childClasspath = classpathFromLibDir(childLibDir); - if (childClasspath.length() > 0 && !libDir.equals(childLibDir)) { + String location = instance.loc; + + File libDir = new File(System.getProperty("karaf.home"), "lib"); + File childLibDir = new File(location, "lib"); + + StringBuilder classpath = classpathFromLibDir(libDir); + StringBuilder childClasspath = classpathFromLibDir(childLibDir); + if (childClasspath.length() > 0 && !libDir.equals(childLibDir)) { + classpath.append(System.getProperty("path.separator")); + classpath.append(childClasspath); + } + + String command = "\"" + + new File(System.getProperty("java.home"), ScriptUtils.isWindows() ? "bin\\java.exe" : "bin/java").getCanonicalPath() + + "\" " + opts + + " " + karafOpts + + " -Djava.util.logging.config.file=\"" + new File(location, "etc/java.util.logging.properties").getCanonicalPath() + "\"" + + " -Djava.endorsed.dirs=\"" + new File(new File(new File(System.getProperty("java.home"), "jre"), "lib"), "endorsed") + System.getProperty("path.separator") + new File(new File(System.getProperty("java.home"), "lib"), "endorsed") + System.getProperty("path.separator") + new File(libDir, "endorsed").getCanonicalPath() + "\"" + + " -Djava.ext.dirs=\"" + new File(new File(new File(System.getProperty("java.home"), "jre"), "lib"), "ext") + System.getProperty("path.separator") + new File(new File(System.getProperty("java.home"), "lib"), "ext") + System.getProperty("path.separator") + new File(libDir, "ext").getCanonicalPath() + "\"" + + " -Dkaraf.home=\"" + System.getProperty("karaf.home") + "\"" + + " -Dkaraf.base=\"" + new File(location).getCanonicalPath() + "\"" + + " -Dkaraf.data=\"" + new File(new File(location).getCanonicalPath(), "data") + "\"" + + " -Dkaraf.etc=\"" + new File(new File(location).getCanonicalPath(), "etc") + "\"" + + " -Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder" + + " -Dkaraf.startLocalConsole=false" + + " -Dkaraf.startRemoteShell=true" + + " -classpath \"" + classpath.toString() + "\"" + + " org.apache.karaf.main.Main"; + LOGGER.debug("Starting instance " + name + " with command: " + command); + Process process = new ProcessBuilderFactoryImpl().newBuilder() + .directory(new File(location)) + .command(command) + .start(); + instance.pid = process.getPid(); + } + + private StringBuilder classpathFromLibDir(File libDir) throws IOException { + File[] jars = libDir.listFiles(new FilenameFilter() { + public boolean accept(File dir, String name) { + return name.endsWith(".jar"); + } + }); + StringBuilder classpath = new StringBuilder(); + if (jars != null) { + for (File jar : jars) { + if (classpath.length() > 0) { classpath.append(System.getProperty("path.separator")); - classpath.append(childClasspath); - } - - String command = "\"" - + new File(System.getProperty("java.home"), ScriptUtils.isWindows() ? "bin\\java.exe" : "bin/java").getCanonicalPath() - + "\" " + opts - + " " + karafOpts - + " -Djava.util.logging.config.file=\"" + new File(location, "etc/java.util.logging.properties").getCanonicalPath() + "\"" - + " -Djava.endorsed.dirs=\"" + new File(new File(new File(System.getProperty("java.home"), "jre"), "lib"), "endorsed") + System.getProperty("path.separator") + new File(new File(System.getProperty("java.home"), "lib"), "endorsed") + System.getProperty("path.separator") + new File(libDir, "endorsed").getCanonicalPath() + "\"" - + " -Djava.ext.dirs=\"" + new File(new File(new File(System.getProperty("java.home"), "jre"), "lib"), "ext") + System.getProperty("path.separator") + new File(new File(System.getProperty("java.home"), "lib"), "ext") + System.getProperty("path.separator") + new File(libDir, "ext").getCanonicalPath() + "\"" - + " -Dkaraf.home=\"" + System.getProperty("karaf.home") + "\"" - + " -Dkaraf.base=\"" + new File(location).getCanonicalPath() + "\"" - + " -Dkaraf.data=\"" + new File(new File(location).getCanonicalPath(), "data") + "\"" - + " -Dkaraf.etc=\"" + new File(new File(location).getCanonicalPath(), "etc") + "\"" - + " -Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder" - + " -Dkaraf.startLocalConsole=false" - + " -Dkaraf.startRemoteShell=true" - + " -classpath \"" + classpath.toString() + "\"" - + " org.apache.karaf.main.Main"; - LOGGER.debug("Starting instance " + name + " with command: " + command); - org.apache.karaf.jpm.Process process = new ProcessBuilderFactoryImpl().newBuilder() - .directory(new File(location)) - .command(command) - .start(); - instance.pid = process.getPid(); - return null; + } + classpath.append(jar.getCanonicalPath()); } + } + return classpath; + } - private StringBuilder classpathFromLibDir(File libDir) throws IOException { - File[] jars = libDir.listFiles(new FilenameFilter() { - public boolean accept(File dir, String name) { - return name.endsWith(".jar"); - } - }); - StringBuilder classpath = new StringBuilder(); - if (jars != null) { - for (File jar : jars) { - if (classpath.length() > 0) { - classpath.append(System.getProperty("path.separator")); - } - classpath.append(jar.getCanonicalPath()); + private void addJar(StringBuilder sb, String groupId, String artifactId) { + File artifactDir = new File(System.getProperty("karaf.home") + File.separator + + "system" + File.separator + + groupId.replaceAll("\\.", File.separator) + File.separator + + artifactId + File.separator); + TreeMap<String, File> jars = new TreeMap<>(); + String[] versions = artifactDir.list(); + if (versions != null) { + for (String version : versions) { + File jar = new File(artifactDir, version + File.separator + artifactId + "-" + version + ".jar"); + if (jar.exists()) { + jars.put(version, jar); + } + } + } + if (jars.isEmpty()) { + throw new IllegalStateException("Cound not find jar for " + groupId + "/" + artifactId); + } + if (sb.length() > 0) { + sb.append(File.pathSeparator); + } + sb.append(jars.lastEntry().getValue().getAbsolutePath()); + } + + public void restartInstance(final String name, final String javaOpts) { + execute(new Task<Object>() { + public Object call(State state) throws IOException { + InstanceState instance = state.instances.get(name); + if (instance == null) { + throw new IllegalArgumentException("Instance " + name + " not found"); + } + String current = System.getProperty("karaf.name"); + if (name.equals(current)) { + String location = System.getProperty("karaf.home"); + StringBuilder classpath = new StringBuilder(); + addJar(classpath, "org.apache.karaf.instance", "org.apache.karaf.instance.core"); + addJar(classpath, "org.apache.karaf.shell", "org.apache.karaf.shell.core"); + addJar(classpath, "org.ops4j.pax.logging", "pax-logging-api"); + addJar(classpath, "jline", "jline"); + String command = "\"" + + new File(System.getProperty("java.home"), ScriptUtils.isWindows() ? "bin\\java.exe" : "bin/java").getCanonicalPath() + + "\" " + + " -Djava.util.logging.config.file=\"" + new File(location, "etc/java.util.logging.properties").getCanonicalPath() + "\"" + + " -Dkaraf.home=\"" + System.getProperty("karaf.home") + "\"" + + " -Dkaraf.base=\"" + new File(location).getCanonicalPath() + "\"" + + " -Dkaraf.data=\"" + new File(new File(location).getCanonicalPath(), "data") + "\"" + + " -Dkaraf.etc=\"" + new File(new File(location).getCanonicalPath(), "etc") + "\"" + + " -Dkaraf.instances=\"" + System.getProperty("karaf.instances") + "\"" + + " -Djavax.management.builder.initial=org.apache.karaf.management.boot.KarafMBeanServerBuilder" + + " -classpath \"" + classpath.toString() + "\"" + + " " + Execute.class.getName() + + " restart --java-opts \"" + javaOpts + "\" " + name; + org.apache.karaf.jpm.Process process = new ProcessBuilderFactoryImpl().newBuilder() + .directory(new File(System.getProperty("karaf.home"))) + .command(command) + .start(); + } else { + checkPid(instance); + if (instance.pid != 0) { + cleanShutdown(instance); } + doStart(instance, name, javaOpts); } - return classpath; + return null; } }); } http://git-wip-us.apache.org/repos/asf/karaf/blob/b6023114/instance/src/main/java/org/apache/karaf/instance/main/Execute.java ---------------------------------------------------------------------- diff --git a/instance/src/main/java/org/apache/karaf/instance/main/Execute.java b/instance/src/main/java/org/apache/karaf/instance/main/Execute.java index 591873e..d94276a 100644 --- a/instance/src/main/java/org/apache/karaf/instance/main/Execute.java +++ b/instance/src/main/java/org/apache/karaf/instance/main/Execute.java @@ -33,6 +33,7 @@ import org.apache.karaf.instance.command.DestroyCommand; import org.apache.karaf.instance.command.InstanceCommandSupport; import org.apache.karaf.instance.command.ListCommand; import org.apache.karaf.instance.command.RenameCommand; +import org.apache.karaf.instance.command.RestartCommand; import org.apache.karaf.instance.command.StartCommand; import org.apache.karaf.instance.command.StatusCommand; import org.apache.karaf.instance.command.StopCommand; @@ -54,6 +55,7 @@ public class Execute { DestroyCommand.class, ListCommand.class, RenameCommand.class, + RestartCommand.class, StartCommand.class, StatusCommand.class, StopCommand.class};
