This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch jmx-upd in repository https://gitbox.apache.org/repos/asf/camel.git
commit 68b21fe063dcd55e6acaf59f480e58710e514466 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Dec 21 15:33:08 2023 +0100 CAMEL-20274: camel-management - Add JMX operation to update route from XML --- .../catalog/main/camel-main-configuration-metadata.json | 1 + .../main/java/org/apache/camel/spi/ManagementAgent.java | 10 ++++++++++ .../resources/org/apache/camel/core/xml/jmxAgent.json | 3 ++- .../camel/core/xml/AbstractCamelContextFactoryBean.java | 4 ++++ .../apache/camel/core/xml/CamelJMXAgentDefinition.java | 17 +++++++++++++++++ .../main/MainConfigurationPropertiesConfigurer.java | 6 ++++++ .../META-INF/camel-main-configuration-metadata.json | 1 + core/camel-main/src/main/docs/main.adoc | 3 ++- .../camel/main/DefaultConfigurationConfigurer.java | 2 ++ .../camel/main/DefaultConfigurationProperties.java | 15 +++++++++++++++ .../camel/api/management/JmxSystemPropertyKeys.java | 3 +++ .../apache/camel/management/DefaultManagementAgent.java | 15 +++++++++++++++ .../org/apache/camel/management/mbean/ManagedRoute.java | 6 ++++++ .../management/DefaultManagementAgentMockTest.java | 4 ++-- .../management/ManagedRouteUpdateRouteFromXmlTest.java | 11 +++++++++++ dsl/camel-kamelet-main/src/main/docs/kamelet-main.adoc | 1 + .../main/java/org/apache/camel/main/KameletMain.java | 1 + 17 files changed, 99 insertions(+), 4 deletions(-) diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json index 3a1734b8152..23395908207 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/camel-main-configuration-metadata.json @@ -71,6 +71,7 @@ { "name": "camel.main.jmxManagementMBeansLevel", "description": "Sets the mbeans registration level. The default value is Default.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "object", "javaType": "org.apache.camel.ManagementMBeansLevel", "defaultValue": "Default" }, { "name": "camel.main.jmxManagementNamePattern", "description": "The naming pattern for creating the CamelContext JMX management name. The default pattern is #name#", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "string", "javaType": "java.lang.String", "defaultValue": "#name#" }, { "name": "camel.main.jmxManagementStatisticsLevel", "description": "Sets the JMX statistics level, the level can be set to Extended to gather additional information The default value is Default.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "object", "javaType": "org.apache.camel.ManagementStatisticsLevel", "defaultValue": "Default", "enum": [ "Extended", "Default", "RoutesOnly", "Off" ] }, + { "name": "camel.main.jmxUpdateRouteEnabled", "description": "Whether to allow updating routes at runtime via JMX using the ManagedRouteMBean. This is disabled by default, but can be enabled for development and troubleshooting purposes, such as updating routes in an existing running Camel via JMX and other tools.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" }, { "name": "camel.main.lightweight", "description": "Configure the context to be lightweight. This will trigger some optimizations and memory reduction options. Lightweight context have some limitations. At this moment, dynamic endpoint destinations are not supported.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" }, { "name": "camel.main.loadHealthChecks", "description": "Whether to load custom health checks by scanning classpath.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" }, { "name": "camel.main.loadStatisticsEnabled", "description": "Sets whether context load statistics is enabled (something like the unix load average). The statistics requires to have camel-management on the classpath as JMX is required. The default value is false.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" }, diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/ManagementAgent.java b/core/camel-api/src/main/java/org/apache/camel/spi/ManagementAgent.java index 199ddb88fde..dba8ccd9057 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/ManagementAgent.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/ManagementAgent.java @@ -326,4 +326,14 @@ public interface ManagementAgent extends Service { */ void setUseHostIPAddress(Boolean useHostIPAddress); + /** + * Gets whether updating routes via JMX is allowed (is default disabled). + */ + Boolean getUpdateRouteEnabled(); + + /** + * Sets whether updating routes via JMX is allowed (is default disabled). + */ + void setUpdateRouteEnabled(Boolean updateRouteEnabled); + } diff --git a/core/camel-core-xml/src/generated/resources/org/apache/camel/core/xml/jmxAgent.json b/core/camel-core-xml/src/generated/resources/org/apache/camel/core/xml/jmxAgent.json index 7077f5b6774..d5af413f381 100644 --- a/core/camel-core-xml/src/generated/resources/org/apache/camel/core/xml/jmxAgent.json +++ b/core/camel-core-xml/src/generated/resources/org/apache/camel/core/xml/jmxAgent.json @@ -26,6 +26,7 @@ "endpointRuntimeStatisticsEnabled": { "index": 11, "kind": "attribute", "displayName": "Endpoint Runtime Statistics Enabled", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "A flag that indicates whether endpoint runtime statistics is enabled" }, "includeHostName": { "index": 12, "kind": "attribute", "displayName": "Include Host Name", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "A flag that indicates whether to include hostname in JMX MBean names." }, "useHostIPAddress": { "index": 13, "kind": "attribute", "displayName": "Use Host IPAddress", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "A flag that indicates whether to use hostname or IP Address in the service url." }, - "mask": { "index": 14, "kind": "attribute", "displayName": "Mask", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "A flag that indicates whether to remove detected sensitive information (such as passwords) from MBean names and attributes." } + "mask": { "index": 14, "kind": "attribute", "displayName": "Mask", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "A flag that indicates whether to remove detected sensitive information (such as passwords) from MBean names and attributes." }, + "updateRouteEnabled": { "index": 15, "kind": "attribute", "displayName": "Update Route Enabled", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Sets whether updating routes via JMX is allowed (is default disabled)." } } } diff --git a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java index 316ccf72302..020b03f8f3b 100644 --- a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java +++ b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java @@ -726,6 +726,10 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex if (camelJMXAgent.getMask() != null) { properties.put("mask", CamelContextHelper.parseBoolean(getContext(), camelJMXAgent.getMask())); } + if (camelJMXAgent.getUpdateRouteEnabled() != null) { + properties.put("updateRouteEnabled", + CamelContextHelper.parseBoolean(getContext(), camelJMXAgent.getUpdateRouteEnabled())); + } if (camelJMXAgent.getLoadStatisticsEnabled() != null) { properties.put("loadStatisticsEnabled", CamelContextHelper.parseBoolean(getContext(), camelJMXAgent.getLoadStatisticsEnabled())); diff --git a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelJMXAgentDefinition.java b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelJMXAgentDefinition.java index 591c409e129..cab7726eecc 100644 --- a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelJMXAgentDefinition.java +++ b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/CamelJMXAgentDefinition.java @@ -76,6 +76,9 @@ public class CamelJMXAgentDefinition extends IdentifiedType { @XmlAttribute @Metadata(defaultValue = "true", javaType = "java.lang.Boolean") private String mask; + @XmlAttribute + @Metadata(defaultValue = "false", javaType = "java.lang.Boolean") + private String updateRouteEnabled; public String getDisabled() { return disabled; @@ -234,6 +237,17 @@ public class CamelJMXAgentDefinition extends IdentifiedType { this.useHostIPAddress = useHostIPAddress; } + public String getUpdateRouteEnabled() { + return updateRouteEnabled; + } + + /** + * Sets whether updating routes via JMX is allowed (is default disabled). + */ + public void setUpdateRouteEnabled(String updateRouteEnabled) { + this.updateRouteEnabled = updateRouteEnabled; + } + @Override public String toString() { StringJoiner buffer = new StringJoiner(", ", "CamelJMXAgent[", "]"); @@ -276,6 +290,9 @@ public class CamelJMXAgentDefinition extends IdentifiedType { if (mask != null) { buffer.add("mask=" + mask); } + if (updateRouteEnabled != null) { + buffer.add("updateRouteEnabled=" + updateRouteEnabled); + } return buffer.toString(); } diff --git a/core/camel-main/src/generated/java/org/apache/camel/main/MainConfigurationPropertiesConfigurer.java b/core/camel-main/src/generated/java/org/apache/camel/main/MainConfigurationPropertiesConfigurer.java index 6c7daa578bc..ca08ad52360 100644 --- a/core/camel-main/src/generated/java/org/apache/camel/main/MainConfigurationPropertiesConfigurer.java +++ b/core/camel-main/src/generated/java/org/apache/camel/main/MainConfigurationPropertiesConfigurer.java @@ -127,6 +127,8 @@ public class MainConfigurationPropertiesConfigurer extends org.apache.camel.supp case "JmxManagementNamePattern": target.setJmxManagementNamePattern(property(camelContext, java.lang.String.class, value)); return true; case "jmxmanagementstatisticslevel": case "JmxManagementStatisticsLevel": target.setJmxManagementStatisticsLevel(property(camelContext, org.apache.camel.ManagementStatisticsLevel.class, value)); return true; + case "jmxupdaterouteenabled": + case "JmxUpdateRouteEnabled": target.setJmxUpdateRouteEnabled(property(camelContext, boolean.class, value)); return true; case "lightweight": case "Lightweight": target.setLightweight(property(camelContext, boolean.class, value)); return true; case "loadhealthchecks": @@ -366,6 +368,8 @@ public class MainConfigurationPropertiesConfigurer extends org.apache.camel.supp case "JmxManagementNamePattern": return java.lang.String.class; case "jmxmanagementstatisticslevel": case "JmxManagementStatisticsLevel": return org.apache.camel.ManagementStatisticsLevel.class; + case "jmxupdaterouteenabled": + case "JmxUpdateRouteEnabled": return boolean.class; case "lightweight": case "Lightweight": return boolean.class; case "loadhealthchecks": @@ -606,6 +610,8 @@ public class MainConfigurationPropertiesConfigurer extends org.apache.camel.supp case "JmxManagementNamePattern": return target.getJmxManagementNamePattern(); case "jmxmanagementstatisticslevel": case "JmxManagementStatisticsLevel": return target.getJmxManagementStatisticsLevel(); + case "jmxupdaterouteenabled": + case "JmxUpdateRouteEnabled": return target.isJmxUpdateRouteEnabled(); case "lightweight": case "Lightweight": return target.isLightweight(); case "loadhealthchecks": diff --git a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json index 3a1734b8152..23395908207 100644 --- a/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json +++ b/core/camel-main/src/generated/resources/META-INF/camel-main-configuration-metadata.json @@ -71,6 +71,7 @@ { "name": "camel.main.jmxManagementMBeansLevel", "description": "Sets the mbeans registration level. The default value is Default.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "object", "javaType": "org.apache.camel.ManagementMBeansLevel", "defaultValue": "Default" }, { "name": "camel.main.jmxManagementNamePattern", "description": "The naming pattern for creating the CamelContext JMX management name. The default pattern is #name#", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "string", "javaType": "java.lang.String", "defaultValue": "#name#" }, { "name": "camel.main.jmxManagementStatisticsLevel", "description": "Sets the JMX statistics level, the level can be set to Extended to gather additional information The default value is Default.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "object", "javaType": "org.apache.camel.ManagementStatisticsLevel", "defaultValue": "Default", "enum": [ "Extended", "Default", "RoutesOnly", "Off" ] }, + { "name": "camel.main.jmxUpdateRouteEnabled", "description": "Whether to allow updating routes at runtime via JMX using the ManagedRouteMBean. This is disabled by default, but can be enabled for development and troubleshooting purposes, such as updating routes in an existing running Camel via JMX and other tools.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" }, { "name": "camel.main.lightweight", "description": "Configure the context to be lightweight. This will trigger some optimizations and memory reduction options. Lightweight context have some limitations. At this moment, dynamic endpoint destinations are not supported.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" }, { "name": "camel.main.loadHealthChecks", "description": "Whether to load custom health checks by scanning classpath.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" }, { "name": "camel.main.loadStatisticsEnabled", "description": "Sets whether context load statistics is enabled (something like the unix load average). The statistics requires to have camel-management on the classpath as JMX is required. The default value is false.", "sourceType": "org.apache.camel.main.DefaultConfigurationProperties", "type": "boolean", "javaType": "boolean", "defaultValue": "false" }, diff --git a/core/camel-main/src/main/docs/main.adoc b/core/camel-main/src/main/docs/main.adoc index 87322318756..45bfa21a833 100644 --- a/core/camel-main/src/main/docs/main.adoc +++ b/core/camel-main/src/main/docs/main.adoc @@ -19,7 +19,7 @@ The following tables lists all the options: // main options: START === Camel Main configurations -The camel.main supports 116 options, which are listed below. +The camel.main supports 117 options, which are listed below. [width="100%",cols="2,5,^1,2",options="header"] |=== @@ -77,6 +77,7 @@ The camel.main supports 116 options, which are listed below. | *camel.main.jmxManagementMBeans{zwsp}Level* | Sets the mbeans registration level. The default value is Default. | Default | ManagementMBeansLevel | *camel.main.jmxManagementName{zwsp}Pattern* | The naming pattern for creating the CamelContext JMX management name. The default pattern is #name# | #name# | String | *camel.main.jmxManagement{zwsp}StatisticsLevel* | Sets the JMX statistics level, the level can be set to Extended to gather additional information The default value is Default. | Default | ManagementStatisticsLevel +| *camel.main.jmxUpdateRoute{zwsp}Enabled* | Whether to allow updating routes at runtime via JMX using the ManagedRouteMBean. This is disabled by default, but can be enabled for development and troubleshooting purposes, such as updating routes in an existing running Camel via JMX and other tools. | false | boolean | *camel.main.lightweight* | Configure the context to be lightweight. This will trigger some optimizations and memory reduction options. Lightweight context have some limitations. At this moment, dynamic endpoint destinations are not supported. | false | boolean | *camel.main.loadHealthChecks* | Whether to load custom health checks by scanning classpath. | false | boolean | *camel.main.loadStatistics{zwsp}Enabled* | Sets whether context load statistics is enabled (something like the unix load average). The statistics requires to have camel-management on the classpath as JMX is required. The default value is false. | false | boolean diff --git a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java index 1ed607290fa..c403d714a0e 100644 --- a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java +++ b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationConfigurer.java @@ -291,6 +291,8 @@ public final class DefaultConfigurationConfigurer { .setMBeansLevel(config.getJmxManagementMBeansLevel()); camelContext.getManagementStrategy().getManagementAgent() .setManagementNamePattern(config.getJmxManagementNamePattern()); + camelContext.getManagementStrategy().getManagementAgent() + .setUpdateRouteEnabled(config.isJmxUpdateRouteEnabled()); } if (config.isCamelEventsTimestampEnabled()) { camelContext.getManagementStrategy().getEventFactory().setTimestampEnabled(true); diff --git a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java index 3cdff9ae560..2e3fc64a8f3 100644 --- a/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java +++ b/core/camel-main/src/main/java/org/apache/camel/main/DefaultConfigurationProperties.java @@ -131,6 +131,7 @@ public abstract class DefaultConfigurationProperties<T> { private String exchangeFactory = "default"; private int exchangeFactoryCapacity = 100; private boolean exchangeFactoryStatisticsEnabled; + private boolean jmxUpdateRouteEnabled; @Metadata(enums = "xml,yaml") private String dumpRoutes; private String dumpRoutesInclude = "routes"; @@ -1326,6 +1327,20 @@ public abstract class DefaultConfigurationProperties<T> { this.routesReloadRestartDuration = routesReloadRestartDuration; } + public boolean isJmxUpdateRouteEnabled() { + return jmxUpdateRouteEnabled; + } + + /** + * Whether to allow updating routes at runtime via JMX using the ManagedRouteMBean. + * + * This is disabled by default, but can be enabled for development and troubleshooting purposes, such as updating + * routes in an existing running Camel via JMX and other tools. + */ + public void setJmxUpdateRouteEnabled(boolean jmxUpdateRouteEnabled) { + this.jmxUpdateRouteEnabled = jmxUpdateRouteEnabled; + } + public boolean isLightweight() { return lightweight; } diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/JmxSystemPropertyKeys.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/JmxSystemPropertyKeys.java index 99d8b0dffb8..51eafd2897f 100644 --- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/JmxSystemPropertyKeys.java +++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/JmxSystemPropertyKeys.java @@ -64,6 +64,9 @@ public final class JmxSystemPropertyKeys { // flag to enable host ip address instead of host name public static final String USE_HOST_IP_ADDRESS = "org.apache.camel.jmx.useHostIPAddress"; + // flag to enable updating routes via XML + public static final String UPDATE_ROUTE_ENABLED = "org.apache.camel.jmx.updateRouteEnabled"; + private JmxSystemPropertyKeys() { // not instantiated } diff --git a/core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementAgent.java b/core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementAgent.java index 94b78e1eb86..ae761567c8a 100644 --- a/core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementAgent.java +++ b/core/camel-management/src/main/java/org/apache/camel/management/DefaultManagementAgent.java @@ -72,6 +72,7 @@ public class DefaultManagementAgent extends ServiceSupport implements Management private Boolean mask = true; private Boolean includeHostName = false; private Boolean useHostIPAddress = false; + private Boolean updateRouteEnabled = false; private String managementNamePattern = "#name#"; private ManagementStatisticsLevel statisticsLevel = ManagementStatisticsLevel.Default; private ManagementMBeansLevel mBeansLevel = ManagementMBeansLevel.Default; @@ -141,6 +142,10 @@ public class DefaultManagementAgent extends ServiceSupport implements Management useHostIPAddress = Boolean.getBoolean(JmxSystemPropertyKeys.USE_HOST_IP_ADDRESS); values.put(JmxSystemPropertyKeys.USE_HOST_IP_ADDRESS, useHostIPAddress); } + if (System.getProperty(JmxSystemPropertyKeys.UPDATE_ROUTE_ENABLED) != null) { + updateRouteEnabled = Boolean.getBoolean(JmxSystemPropertyKeys.UPDATE_ROUTE_ENABLED); + values.put(JmxSystemPropertyKeys.UPDATE_ROUTE_ENABLED, updateRouteEnabled); + } if (!values.isEmpty()) { LOG.info("ManagementAgent detected JVM system properties: {}", values); @@ -297,6 +302,16 @@ public class DefaultManagementAgent extends ServiceSupport implements Management this.mBeansLevel = mBeansLevel; } + @Override + public Boolean getUpdateRouteEnabled() { + return updateRouteEnabled != null && updateRouteEnabled; + } + + @Override + public void setUpdateRouteEnabled(Boolean updateRouteEnabled) { + this.updateRouteEnabled = updateRouteEnabled; + } + @Override public CamelContext getCamelContext() { return camelContext; diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java index 0bd96f85748..27dcacf9339 100644 --- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java +++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedRoute.java @@ -678,6 +678,12 @@ public class ManagedRoute extends ManagedPerformanceCounter implements TimerList @Override public void updateRouteFromXml(String xml) throws Exception { + // check whether this is allowed + Boolean enabled = context.getManagementStrategy().getManagementAgent().getUpdateRouteEnabled(); + if (enabled == null || !enabled) { + throw new IllegalAccessException("Updating route is not enabled"); + } + // convert to model from xml ExtendedCamelContext ecc = context.getCamelContextExtension(); InputStream is = context.getTypeConverter().convertTo(InputStream.class, xml); diff --git a/core/camel-management/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java b/core/camel-management/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java index ec98268aa60..8e8c6ec344b 100644 --- a/core/camel-management/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java +++ b/core/camel-management/src/test/java/org/apache/camel/management/DefaultManagementAgentMockTest.java @@ -79,7 +79,7 @@ public class DefaultManagementAgentMockTest { } @Test - public void testShouldUseHostIPAddressWhenFlagisTrue() throws Exception { + public void testShouldUseHostIPAddressWhenFlagIsTrue() throws Exception { System.setProperty(JmxSystemPropertyKeys.USE_HOST_IP_ADDRESS, "true"); try { CamelContext ctx = new DefaultCamelContext(); @@ -94,7 +94,7 @@ public class DefaultManagementAgentMockTest { } @Test - public void shouldUseHostNameWhenFlagisFalse() throws Exception { + public void shouldUseHostNameWhenFlagIsFalse() throws Exception { System.setProperty(JmxSystemPropertyKeys.USE_HOST_IP_ADDRESS, "false"); try { CamelContext ctx = new DefaultCamelContext(); diff --git a/core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteUpdateRouteFromXmlTest.java b/core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteUpdateRouteFromXmlTest.java index 7ba41bffef7..378aa6ee7ad 100644 --- a/core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteUpdateRouteFromXmlTest.java +++ b/core/camel-management/src/test/java/org/apache/camel/management/ManagedRouteUpdateRouteFromXmlTest.java @@ -21,6 +21,7 @@ import java.util.Set; import javax.management.MBeanServer; import javax.management.ObjectName; +import org.apache.camel.CamelContext; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.junit.jupiter.api.Test; @@ -33,6 +34,16 @@ import static org.junit.jupiter.api.Assertions.fail; @DisabledOnOs(OS.AIX) public class ManagedRouteUpdateRouteFromXmlTest extends ManagementTestSupport { + @Override + protected CamelContext createCamelContext() throws Exception { + CamelContext context = super.createCamelContext(); + + // enable updating route + context.getManagementStrategy().getManagementAgent().setUpdateRouteEnabled(true); + + return context; + } + @Test public void testUpdateRouteFromXml() throws Exception { MBeanServer mbeanServer = getMBeanServer(); diff --git a/dsl/camel-kamelet-main/src/main/docs/kamelet-main.adoc b/dsl/camel-kamelet-main/src/main/docs/kamelet-main.adoc index d44520fc044..2caa3ec9d9f 100644 --- a/dsl/camel-kamelet-main/src/main/docs/kamelet-main.adoc +++ b/dsl/camel-kamelet-main/src/main/docs/kamelet-main.adoc @@ -23,6 +23,7 @@ The `KameletMain` is pre-configured with the following properties: camel.component.kamelet.location = classpath:/kamelets,github:apache:camel-kamelets/kamelets camel.component.rest.consumerComponentName = platform-http camel.component.rest.producerComponentName = vertx-http +came.main.jmxUpdateRouteEnabled = true ---- These settings can be overridden by configuration in `application.properties`. diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java index ac0c743e291..f9480d9747e 100644 --- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java +++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java @@ -718,6 +718,7 @@ public class KameletMain extends MainCommandLineSupport { addInitialProperty("camel.component.kamelet.location", location); addInitialProperty("camel.component.rest.consumerComponentName", "platform-http"); addInitialProperty("camel.component.rest.producerComponentName", "vertx-http"); + addInitialProperty("came.main.jmxUpdateRouteEnabled", "true"); } protected String startupInfo() {