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 2026/10/07 08:10:35 UTC

(camel) branch main updated: CAMEL-25073: camel-management - Do not register components with mbeansLevel=ContextOnly (#27462)

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


The following commit(s) were added to refs/heads/main by this push:
     new 90e8705dd70f CAMEL-25073: camel-management - Do not register components with mbeansLevel=ContextOnly (#27462)
90e8705dd70f is described below

commit 90e8705dd70f975428ec9af415541d8df31ec8c2
Author: allthingssecurity <49...@users.noreply.github.com>
AuthorDate: Wed Oct 7 13:40:28 2026 +0530

    CAMEL-25073: camel-management - Do not register components with mbeansLevel=ContextOnly (#27462)
    
    Co-Authored-By: Claude Opus 5.5 <no...@anthropic.com>
---
 .../camel/management/JmxManagementLifecycleStrategy.java      |  4 ++++
 .../camel/management/ManagedMBeansLevelContextOnlyTest.java   | 11 +++++++++++
 .../modules/ROOT/pages/camel-4x-upgrade-guide-4_23.adoc       |  7 +++++++
 3 files changed, 22 insertions(+)

diff --git a/core/camel-management/src/main/java/org/apache/camel/management/JmxManagementLifecycleStrategy.java b/core/camel-management/src/main/java/org/apache/camel/management/JmxManagementLifecycleStrategy.java
index be8b67f02ede..e81ece038129 100644
--- a/core/camel-management/src/main/java/org/apache/camel/management/JmxManagementLifecycleStrategy.java
+++ b/core/camel-management/src/main/java/org/apache/camel/management/JmxManagementLifecycleStrategy.java
@@ -437,6 +437,10 @@ public class JmxManagementLifecycleStrategy extends ServiceSupport implements Li
             preServices.add(lf -> lf.onComponentAdd(name, component));
             return;
         }
+        // but not with mbeansLevel=ContextOnly, which only registers the CamelContext
+        if (!getManagementStrategy().getManagementAgent().getMBeansLevel().isRoutes()) {
+            return;
+        }
         try {
             Object mc = getManagementObjectStrategy().getManagedObjectForComponent(camelContext, component, name);
             manageObject(mc);
diff --git a/core/camel-management/src/test/java/org/apache/camel/management/ManagedMBeansLevelContextOnlyTest.java b/core/camel-management/src/test/java/org/apache/camel/management/ManagedMBeansLevelContextOnlyTest.java
index b2816df03571..68019a105b80 100644
--- a/core/camel-management/src/test/java/org/apache/camel/management/ManagedMBeansLevelContextOnlyTest.java
+++ b/core/camel-management/src/test/java/org/apache/camel/management/ManagedMBeansLevelContextOnlyTest.java
@@ -21,6 +21,8 @@ import java.util.Set;
 import javax.management.ObjectName;
 
 import org.apache.camel.ManagementMBeansLevel;
+import org.apache.camel.component.seda.SedaComponent;
+import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.DisabledOnOs;
 import org.junit.jupiter.api.condition.OS;
 
@@ -39,4 +41,13 @@ public class ManagedMBeansLevelContextOnlyTest extends ManagedMBeansLevelTestSup
         assertEquals(0, routes.size());
         assertEquals(0, processors.size());
     }
+
+    @Test
+    void testNoComponentMBeans() throws Exception {
+        // also a component added after CamelContext has been started
+        context.addComponent("mySeda", new SedaComponent());
+
+        Set<ObjectName> components = getMBeanServer().queryNames(new ObjectName("*:type=components,*"), null);
+        assertEquals(0, components.size(), "There should be no component MBeans: " + components);
+    }
 }
diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_23.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_23.adoc
index 60e5212a3d24..b7c497ad1d28 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_23.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_23.adoc
@@ -736,6 +736,13 @@ succeeded on its second redelivery reported 1 instead of 2, and a route whose ex
 completed reported 0), and a processor or route that the exchange went through after a redelivery could count that
 redelivery as well.
 
+==== mbeansLevel=ContextOnly
+
+With `mbeansLevel=ContextOnly` the components are no longer registered as MBeans (like the endpoints, thread pools
+and most services, which were not registered at this level already). Prior to Camel 4.23 an MBean was registered for
+every component. Use `RoutesOnly` (or `Default`) to keep the component MBeans. The CamelContext, health check and route
+controller MBeans are still registered.
+
 === camel-groovy
 
 A `GroovyShellFactory` is now looked up in the registry once per `CamelContext`, when the first groovy expression is