You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/08/20 16:01:11 UTC

[camel] branch main updated (05ae5dc77c4 -> 9bbd14f39b3)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


    from 05ae5dc77c4 CAMEL-18412: camel-jbang - Add support for hawtio
     new 947c4cbe0bb camel-jbang - Refactor
     new 9bbd14f39b3 CAMEL-18412: camel-jbang - Add support for hawtio

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../modules/ROOT/pages/camel-jbang.adoc            | 27 +++++++-
 .../dsl/jbang/core/commands/CamelJBangMain.java    |  6 +-
 .../{jolokia => process}/AvailablePortFinder.java  |  4 +-
 .../core/commands/{jolokia => process}/Hawtio.java | 57 ++++++++++++++---
 .../commands/{jolokia => process}/Jolokia.java     | 34 +++++++---
 .../core/commands/{ => process}/ListProcess.java   | 27 ++------
 .../ProcessBaseCommand.java}                       | 72 ++++++++--------------
 .../core/commands/{ => process}/StopProcess.java   | 50 ++-------------
 8 files changed, 141 insertions(+), 136 deletions(-)
 rename dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/{jolokia => process}/AvailablePortFinder.java (97%)
 rename dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/{jolokia => process}/Hawtio.java (72%)
 rename dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/{jolokia => process}/Jolokia.java (75%)
 rename dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/{ => process}/ListProcess.java (76%)
 copy dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/{StopProcess.java => process/ProcessBaseCommand.java} (55%)
 rename dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/{ => process}/StopProcess.java (54%)


[camel] 02/02: CAMEL-18412: camel-jbang - Add support for hawtio

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 9bbd14f39b3602dd3df2e0e3e334f39d84f73486
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Aug 20 18:00:46 2022 +0200

    CAMEL-18412: camel-jbang - Add support for hawtio
---
 .../modules/ROOT/pages/camel-jbang.adoc            | 27 +++++++++++++-
 .../dsl/jbang/core/commands/process/Hawtio.java    | 43 ++++++++++++++++++++--
 .../dsl/jbang/core/commands/process/Jolokia.java   | 14 +++++--
 .../jbang/core/commands/process/ListProcess.java   |  2 +-
 .../jbang/core/commands/process/StopProcess.java   |  4 +-
 5 files changed, 79 insertions(+), 11 deletions(-)

diff --git a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
index 9fd0731765d..fbd9e01eb92 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
@@ -568,8 +568,8 @@ as all the JMX management information, and not but least to visualize the Camel
 with live performance metrics. Hawtio is a handy tool for many years, and we have made it
 easy to use Hawtio with Camel JBang.
 
-To let Hawtio able to inspect the Camel integrations, then at first you need to attach
-the Jolokia JVM Agent in the running integration, this can be done as follows:
+To let Hawtio able to inspect the Camel integrations, then the Jolokia JVM Agent
+must be installed in the running integration, this can be done, either explicit as follows:
 
 [source,bash]
 ----
@@ -587,6 +587,17 @@ Started Jolokia for PID 37928
 http://127.0.0.1:8778/jolokia/
 ----
 
+Instead of using PID you can also attach by name pattern. In this example because the
+two Camel integrations have unique names (foo and dude), then you can also attach Jolokia
+without knowing the PID as follows:
+
+[source,bash]
+----
+camel jolokia du
+Started Jolokia for PID 44805
+http://127.0.0.1:8778/jolokia/
+----
+
 Then you can launch https://hawt.io/[Hawtio] using Camel JBang:
 
 [source,bash]
@@ -612,6 +623,18 @@ camel jolokia 37928 --stop
 Stopped Jolokia for PID 37928
 ----
 
+It is also possible to do this with only one command, as follows:
+
+[source,bash]
+----
+camel hawtio dude
+----
+
+Where _dude_ is the name of the running Camel integration. When you stop Hawtio (using `ctrl` + `c`)
+then Camel will attempt to uninstall the Jolokia JVM Agent, however this may not be
+able to do this always, because the JVM is being terminated which can prevent camel-jbang
+from doing JVM process communication to the running Camel integration.
+
 === Scripting from terminal using pipes
 
 You can also execute a Camel JBang file as a script that can be used for terminal scripting with pipes and filters.
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Hawtio.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Hawtio.java
index a27c8483927..928295ec0d0 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Hawtio.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Hawtio.java
@@ -33,20 +33,24 @@ import picocli.CommandLine.Command;
 @Command(name = "hawtio", description = "Launch Hawtio web console")
 public class Hawtio extends CamelCommand {
 
+    @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "1")
+    String name;
+
     @CommandLine.Option(names = { "--version" },
                         description = "Version of the Hawtio web console", defaultValue = "2.15.0")
-    private String version = "2.15.0";
+    String version = "2.15.0";
 
     // use port 8888 as 8080 is too commonly used
     @CommandLine.Option(names = { "--port" },
                         description = "Port number to use for Hawtio web console", defaultValue = "8888")
-    private int port = 8888;
+    int port = 8888;
 
     @CommandLine.Option(names = { "--openUrl" },
                         description = "To automatic open Hawtio web console in the web browser", defaultValue = "true")
-    private boolean openUrl = true;
+    boolean openUrl = true;
 
     private final CountDownLatch shutdownLatch = new CountDownLatch(1);
+    private volatile long pid;
 
     public Hawtio(CamelJBangMain main) {
         super(main);
@@ -54,6 +58,39 @@ public class Hawtio extends CamelCommand {
 
     @Override
     public Integer call() throws Exception {
+        int exit;
+        if (name == null) {
+            exit = callHawtio();
+        } else {
+            // attach jolokia before calling hawtio and disconnect afterwards
+            try {
+                exit = connectJolokia();
+                if (exit == 0) {
+                    exit = callHawtio();
+                }
+            } finally {
+                disconnectJolokia();
+            }
+        }
+        return exit;
+    }
+
+    protected Integer connectJolokia() throws Exception {
+        Jolokia jolokia = new Jolokia(getMain());
+        jolokia.name = name;
+        int exit = jolokia.call();
+        this.pid = jolokia.getPid();
+        return exit;
+    }
+
+    protected void disconnectJolokia() throws Exception {
+        Jolokia jolokia = new Jolokia(getMain());
+        jolokia.name = "" + pid;
+        jolokia.stop = true;
+        jolokia.call();
+    }
+
+    protected Integer callHawtio() throws Exception {
         ClassLoader cl = createClassLoader();
 
         MavenDependencyDownloader downloader = new MavenDependencyDownloader();
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Jolokia.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Jolokia.java
index a1316835857..5a278726f4a 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Jolokia.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Jolokia.java
@@ -30,11 +30,13 @@ import picocli.CommandLine.Command;
 public class Jolokia extends ProcessBaseCommand {
 
     @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "1")
-    private String name;
+    String name;
 
     @CommandLine.Option(names = { "--stop" },
                         description = "Stops the Jolokia JVM Agent in the running Camel integration")
-    private boolean stop;
+    boolean stop;
+
+    private volatile long pid;
 
     public Jolokia(CamelJBangMain main) {
         super(main);
@@ -51,7 +53,7 @@ public class Jolokia extends ProcessBaseCommand {
             return 0;
         }
 
-        long pid = pids.get(0);
+        this.pid = pids.get(0);
         int exitCode;
         try {
             OptionsAndArgs options;
@@ -81,4 +83,10 @@ public class Jolokia extends ProcessBaseCommand {
         return exitCode;
     }
 
+    /**
+     * The pid of the running Camel integration that was discovered and used
+     */
+    long getPid() {
+        return pid;
+    }
 }
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java
index 6579e9b4368..6167614cc0a 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java
@@ -27,7 +27,7 @@ public class ListProcess extends ProcessBaseCommand {
 
     @CommandLine.Option(names = { "--sort" },
                         description = "Sort by pid, name or age", defaultValue = "pid")
-    private String sort;
+    String sort;
 
     public ListProcess(CamelJBangMain main) {
         super(main);
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/StopProcess.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/StopProcess.java
index e04d613920f..8444780101a 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/StopProcess.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/StopProcess.java
@@ -28,11 +28,11 @@ import picocli.CommandLine.Command;
 public class StopProcess extends ProcessBaseCommand {
 
     @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "0..1")
-    private String name;
+    String name;
 
     @CommandLine.Option(names = { "--all" },
                         description = "To stop all running Camel integrations")
-    private boolean all;
+    boolean all;
 
     public StopProcess(CamelJBangMain main) {
         super(main);


[camel] 01/02: camel-jbang - Refactor

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 947c4cbe0bb664a172f9cafe81155d238f8de1df
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Aug 20 15:45:59 2022 +0200

    camel-jbang - Refactor
---
 .../dsl/jbang/core/commands/CamelJBangMain.java    |  6 +-
 .../{jolokia => process}/AvailablePortFinder.java  |  4 +-
 .../core/commands/{jolokia => process}/Hawtio.java | 16 ++---
 .../commands/{jolokia => process}/Jolokia.java     | 24 +++++---
 .../core/commands/{ => process}/ListProcess.java   | 25 +-------
 .../ProcessBaseCommand.java}                       | 72 ++++++++--------------
 .../core/commands/{ => process}/StopProcess.java   | 46 ++------------
 7 files changed, 65 insertions(+), 128 deletions(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
index 428e701c176..9d404805843 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
@@ -20,8 +20,10 @@ import java.util.concurrent.Callable;
 
 import org.apache.camel.catalog.CamelCatalog;
 import org.apache.camel.catalog.DefaultCamelCatalog;
-import org.apache.camel.dsl.jbang.core.commands.jolokia.Hawtio;
-import org.apache.camel.dsl.jbang.core.commands.jolokia.Jolokia;
+import org.apache.camel.dsl.jbang.core.commands.process.Hawtio;
+import org.apache.camel.dsl.jbang.core.commands.process.Jolokia;
+import org.apache.camel.dsl.jbang.core.commands.process.ListProcess;
+import org.apache.camel.dsl.jbang.core.commands.process.StopProcess;
 import picocli.CommandLine;
 import picocli.CommandLine.Command;
 
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/jolokia/AvailablePortFinder.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/AvailablePortFinder.java
similarity index 97%
rename from dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/jolokia/AvailablePortFinder.java
rename to dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/AvailablePortFinder.java
index 252cde0061b..d42ee748add 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/jolokia/AvailablePortFinder.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/AvailablePortFinder.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.dsl.jbang.core.commands.jolokia;
+package org.apache.camel.dsl.jbang.core.commands.process;
 
 import java.io.IOException;
 import java.net.InetAddress;
@@ -23,7 +23,7 @@ import java.net.ServerSocket;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
-public class AvailablePortFinder {
+class AvailablePortFinder {
 
     private static final AvailablePortFinder INSTANCE = new AvailablePortFinder();
 
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/jolokia/Hawtio.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Hawtio.java
similarity index 89%
rename from dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/jolokia/Hawtio.java
rename to dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Hawtio.java
index 844820e80a9..a27c8483927 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/jolokia/Hawtio.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Hawtio.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.dsl.jbang.core.commands.jolokia;
+package org.apache.camel.dsl.jbang.core.commands.process;
 
 import java.awt.*;
 import java.lang.reflect.Method;
@@ -37,12 +37,13 @@ public class Hawtio extends CamelCommand {
                         description = "Version of the Hawtio web console", defaultValue = "2.15.0")
     private String version = "2.15.0";
 
+    // use port 8888 as 8080 is too commonly used
     @CommandLine.Option(names = { "--port" },
-                        description = "Port number to use for Hawtio web console", defaultValue = "8080")
-    private int port = 8080;
+                        description = "Port number to use for Hawtio web console", defaultValue = "8888")
+    private int port = 8888;
 
     @CommandLine.Option(names = { "--openUrl" },
-                        description = "To automatic open hawtio web console in the web browser", defaultValue = "true")
+                        description = "To automatic open Hawtio web console in the web browser", defaultValue = "true")
     private boolean openUrl = true;
 
     private final CountDownLatch shutdownLatch = new CountDownLatch(1);
@@ -80,6 +81,8 @@ public class Hawtio extends CamelCommand {
             Object hawt = clazz.getDeclaredConstructor().newInstance();
             Method m = clazz.getMethod("setWar", String.class);
             ObjectHelper.invokeMethod(m, hawt, war);
+            m = clazz.getMethod("setPort", Integer.class);
+            ObjectHelper.invokeMethod(m, hawt, port);
             m = clazz.getMethod("run");
             ObjectHelper.invokeMethod(m, hawt);
 
@@ -91,7 +94,7 @@ public class Hawtio extends CamelCommand {
                     try {
                         Desktop.getDesktop().browse(new URI(url));
                     } catch (Exception e) {
-                        System.err.println(String.format("Failed to open browser session, to access hawtio visit \"%s\"", url));
+                        System.err.println("Failed to open browser session, to access Hawtio open url: " + url);
                     }
                 }
             }
@@ -101,8 +104,7 @@ public class Hawtio extends CamelCommand {
             shutdownLatch.await();
 
         } catch (Throwable e) {
-            System.err.println("Cannot launch hawtio due to: " + e.getMessage());
-            e.printStackTrace();
+            System.err.println("Cannot launch Hawtio due to: " + e.getMessage());
             return 1;
         } finally {
             downloader.stop();
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/jolokia/Jolokia.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Jolokia.java
similarity index 79%
rename from dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/jolokia/Jolokia.java
rename to dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Jolokia.java
index 08c13f919c0..a1316835857 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/jolokia/Jolokia.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/Jolokia.java
@@ -14,9 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.dsl.jbang.core.commands.jolokia;
+package org.apache.camel.dsl.jbang.core.commands.process;
+
+import java.util.List;
 
-import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
 import org.jolokia.jvmagent.client.command.CommandDispatcher;
 import org.jolokia.jvmagent.client.util.OptionsAndArgs;
@@ -26,10 +27,10 @@ import picocli.CommandLine;
 import picocli.CommandLine.Command;
 
 @Command(name = "jolokia", description = "Attach Jolokia JVM Agent to a running Camel integration")
-public class Jolokia extends CamelCommand {
+public class Jolokia extends ProcessBaseCommand {
 
-    @CommandLine.Parameters(description = "PID of running Camel integration", arity = "1")
-    private long pid;
+    @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "1")
+    private String name;
 
     @CommandLine.Option(names = { "--stop" },
                         description = "Stops the Jolokia JVM Agent in the running Camel integration")
@@ -41,8 +42,17 @@ public class Jolokia extends CamelCommand {
 
     @Override
     public Integer call() throws Exception {
-        int exitCode;
+        List<Long> pids = findPids(name);
+        if (pids.isEmpty()) {
+            return 0;
+        } else if (pids.size() > 1) {
+            System.out.println("Name or pid " + name + " matches " + pids.size()
+                               + " running Camel integrations. Specify a name or PID that matches exactly one.");
+            return 0;
+        }
 
+        long pid = pids.get(0);
+        int exitCode;
         try {
             OptionsAndArgs options;
             if (stop) {
@@ -64,7 +74,7 @@ public class Jolokia extends CamelCommand {
                 }
             }
         } catch (Exception e) {
-            System.err.println("Cannot execute jolokia command due " + e.getMessage());
+            System.err.println("Cannot execute jolokia command due: " + e.getMessage());
             exitCode = 1;
         }
 
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ListProcess.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java
similarity index 77%
rename from dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ListProcess.java
rename to dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java
index 8685e6ae081..6579e9b4368 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ListProcess.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java
@@ -14,16 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.dsl.jbang.core.commands;
+package org.apache.camel.dsl.jbang.core.commands.process;
 
+import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
 import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.StringHelper;
 import org.apache.camel.util.TimeUtils;
 import picocli.CommandLine;
 import picocli.CommandLine.Command;
 
 @Command(name = "ps", description = "List running Camel applications")
-class ListProcess extends CamelCommand {
+public class ListProcess extends ProcessBaseCommand {
 
     @CommandLine.Option(names = { "--sort" },
                         description = "Sort by pid, name or age", defaultValue = "pid")
@@ -59,23 +59,4 @@ class ListProcess extends CamelCommand {
         return 0;
     }
 
-    private static String extractName(ProcessHandle ph) {
-        String cl = ph.info().commandLine().orElse("");
-        String name = StringHelper.after(cl, "main.CamelJBang run");
-        if (name != null) {
-            name = name.trim();
-        } else {
-            name = "";
-        }
-        return name;
-    }
-
-    private static long extractSince(ProcessHandle ph) {
-        long since = 0;
-        if (ph.info().startInstant().isPresent()) {
-            since = ph.info().startInstant().get().toEpochMilli();
-        }
-        return since;
-    }
-
 }
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/StopProcess.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ProcessBaseCommand.java
similarity index 55%
copy from dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/StopProcess.java
copy to dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ProcessBaseCommand.java
index e35eaf97a04..40e5651f0db 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/StopProcess.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ProcessBaseCommand.java
@@ -14,64 +14,51 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.dsl.jbang.core.commands;
+package org.apache.camel.dsl.jbang.core.commands.process;
 
-import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
+import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
 import org.apache.camel.support.PatternHelper;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.StringHelper;
-import picocli.CommandLine;
-import picocli.CommandLine.Command;
 
-@Command(name = "stop", description = "Stop a running Camel integration")
-class StopProcess extends CamelCommand {
+abstract class ProcessBaseCommand extends CamelCommand {
 
-    @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "0..1")
-    private String name;
-
-    @CommandLine.Option(names = { "--all" },
-                        description = "To stop all running Camel integrations")
-    private boolean all;
-
-    public StopProcess(CamelJBangMain main) {
+    public ProcessBaseCommand(CamelJBangMain main) {
         super(main);
     }
 
-    @Override
-    public Integer call() throws Exception {
-        if (!all && name == null) {
-            return 0;
-        } else if (all) {
-            name = "*";
-        }
+    static List<Long> findPids(String name) {
+        List<Long> pids = new ArrayList<>();
 
         // we need to know the pids of the running camel integrations
-        List<Long> pids;
         if (name.matches("\\d+")) {
-            pids = List.of(Long.parseLong(name));
+            return List.of(Long.parseLong(name));
         } else {
             // lets be open and match all that starts with this pattern
             if (!name.endsWith("*")) {
                 name = name + "*";
             }
-            pids = findPids(name);
         }
 
-        // stop by deleting the pid file
-        for (Long pid : pids) {
-            File dir = new File(System.getProperty("user.home"), ".camel");
-            File pidFile = new File(dir, "" + pid);
-            System.out.println("Stopping Camel integration (pid: " + pid + ")");
-            FileUtil.deleteFile(pidFile);
-        }
+        final String pattern = name;
+        ProcessHandle.allProcesses()
+                .forEach(ph -> {
+                    String pName = extractName(ph);
+                    // ignore file extension, so it is easier to match by name
+                    pName = FileUtil.onlyName(pName);
+                    if (!pName.isEmpty() && PatternHelper.matchPattern(pName, pattern)) {
+                        pids.add(ph.pid());
+                    }
+                });
 
-        return 0;
+        return pids;
     }
 
-    private static String extractName(ProcessHandle ph) {
+    static String extractName(ProcessHandle ph) {
         String cl = ph.info().commandLine().orElse("");
         String name = StringHelper.after(cl, "main.CamelJBang run");
         if (name != null) {
@@ -82,19 +69,12 @@ class StopProcess extends CamelCommand {
         return name;
     }
 
-    private static List<Long> findPids(String pattern) {
-        List<Long> pids = new ArrayList<>();
-
-        ProcessHandle.allProcesses()
-                .forEach(ph -> {
-                    String name = extractName(ph);
-                    // ignore file extension, so it is easier to match by name
-                    name = FileUtil.onlyName(name);
-                    if (!name.isEmpty() && PatternHelper.matchPattern(name, pattern)) {
-                        pids.add(ph.pid());
-                    }
-                });
-        return pids;
+    static long extractSince(ProcessHandle ph) {
+        long since = 0;
+        if (ph.info().startInstant().isPresent()) {
+            since = ph.info().startInstant().get().toEpochMilli();
+        }
+        return since;
     }
 
 }
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/StopProcess.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/StopProcess.java
similarity index 56%
rename from dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/StopProcess.java
rename to dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/StopProcess.java
index e35eaf97a04..e04d613920f 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/StopProcess.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/StopProcess.java
@@ -14,20 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.dsl.jbang.core.commands;
+package org.apache.camel.dsl.jbang.core.commands.process;
 
 import java.io.File;
-import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.camel.support.PatternHelper;
+import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
 import org.apache.camel.util.FileUtil;
-import org.apache.camel.util.StringHelper;
 import picocli.CommandLine;
 import picocli.CommandLine.Command;
 
 @Command(name = "stop", description = "Stop a running Camel integration")
-class StopProcess extends CamelCommand {
+public class StopProcess extends ProcessBaseCommand {
 
     @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "0..1")
     private String name;
@@ -48,17 +46,7 @@ class StopProcess extends CamelCommand {
             name = "*";
         }
 
-        // we need to know the pids of the running camel integrations
-        List<Long> pids;
-        if (name.matches("\\d+")) {
-            pids = List.of(Long.parseLong(name));
-        } else {
-            // lets be open and match all that starts with this pattern
-            if (!name.endsWith("*")) {
-                name = name + "*";
-            }
-            pids = findPids(name);
-        }
+        List<Long> pids = findPids(name);
 
         // stop by deleting the pid file
         for (Long pid : pids) {
@@ -71,30 +59,4 @@ class StopProcess extends CamelCommand {
         return 0;
     }
 
-    private static String extractName(ProcessHandle ph) {
-        String cl = ph.info().commandLine().orElse("");
-        String name = StringHelper.after(cl, "main.CamelJBang run");
-        if (name != null) {
-            name = name.trim();
-        } else {
-            name = "";
-        }
-        return name;
-    }
-
-    private static List<Long> findPids(String pattern) {
-        List<Long> pids = new ArrayList<>();
-
-        ProcessHandle.allProcesses()
-                .forEach(ph -> {
-                    String name = extractName(ph);
-                    // ignore file extension, so it is easier to match by name
-                    name = FileUtil.onlyName(name);
-                    if (!name.isEmpty() && PatternHelper.matchPattern(name, pattern)) {
-                        pids.add(ph.pid());
-                    }
-                });
-        return pids;
-    }
-
 }