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 2023/03/18 11:02:28 UTC

[camel-spring-boot] branch main updated (997de421846 -> b301c4fdf49)

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-spring-boot.git


    from 997de421846 [create-pull-request] automated change
     new 1a4f1aaadd5 CAMEL-19136: camel-micrometer-starter - Turn of metrics with uri tag by default as it can lead to too many tags due to dynamic values.
     new b301c4fdf49 Regen

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:
 .../camel/springboot/catalog/components/http.json  | 27 ++++---
 .../camel/springboot/catalog/components/https.json | 27 ++++---
 .../springboot/catalog/components/weather.json     |  2 +-
 .../springboot/catalog/components/workday.json     |  2 +-
 components-starter/camel-box-starter/pom.xml       |  8 --
 components-starter/camel-cm-sms-starter/pom.xml    |  8 --
 components-starter/camel-geocoder-starter/pom.xml  |  8 --
 components-starter/camel-graphql-starter/pom.xml   |  8 --
 components-starter/camel-http-starter/pom.xml      |  8 --
 .../camel-http-starter/src/main/docs/http.json     | 45 ++++++-----
 .../springboot/HttpComponentConfiguration.java     | 93 ++++++++++++++--------
 .../http/springboot/HttpComponentConverter.java    | 14 ++--
 .../src/main/docs/micrometer.json                  |  7 ++
 .../MicrometerTagsAutoConfiguration.java           | 11 ++-
 .../metrics/CamelMetricsConfiguration.java         | 15 ++++
 components-starter/camel-oaipmh-starter/pom.xml    |  8 --
 .../camel-sap-netweaver-starter/pom.xml            |  8 --
 components-starter/camel-weather-starter/pom.xml   |  8 --
 components-starter/camel-workday-starter/pom.xml   |  8 --
 19 files changed, 158 insertions(+), 157 deletions(-)


[camel-spring-boot] 01/02: CAMEL-19136: camel-micrometer-starter - Turn of metrics with uri tag by default as it can lead to too many tags due to dynamic values.

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-spring-boot.git

commit 1a4f1aaadd51fc2ea5de4d267c66335647b60a52
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Mar 18 11:52:15 2023 +0100

    CAMEL-19136: camel-micrometer-starter - Turn of metrics with uri tag by default as it can lead to too many tags due to dynamic values.
---
 .../src/main/docs/micrometer.json                      |  7 +++++++
 .../springboot/MicrometerTagsAutoConfiguration.java    | 14 ++++++++++++--
 .../springboot/metrics/CamelMetricsConfiguration.java  | 18 ++++++++++++++++++
 3 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/components-starter/camel-micrometer-starter/src/main/docs/micrometer.json b/components-starter/camel-micrometer-starter/src/main/docs/micrometer.json
index e6c174b84c0..61705f360d1 100644
--- a/components-starter/camel-micrometer-starter/src/main/docs/micrometer.json
+++ b/components-starter/camel-micrometer-starter/src/main/docs/micrometer.json
@@ -76,6 +76,13 @@
       "description": "Set whether to enable the MicrometerRoutePolicyFactory for capturing metrics on route processing times.",
       "sourceType": "org.apache.camel.component.micrometer.springboot.metrics.CamelMetricsConfiguration",
       "defaultValue": true
+    },
+    {
+      "name": "camel.metrics.uri-tag-expand-values",
+      "type": "java.lang.Boolean",
+      "description": "Whether HTTP uri tags should be expanded or not. For example a REST service defined with base URL: \/users\/{id} will capture metrics with uri tag: \/users\/{id}. There can be some use-cases where you want to expand the URI tag to include the actual requested value instead, so the uri tag will be something like: \/users\/123 However this can lead to many tags as the URI is dynamic, so use this with care.",
+      "sourceType": "org.apache.camel.component.micrometer.springboot.metrics.CamelMetricsConfiguration",
+      "defaultValue": false
     }
   ],
   "hints": []
diff --git a/components-starter/camel-micrometer-starter/src/main/java/org/apache/camel/component/micrometer/springboot/MicrometerTagsAutoConfiguration.java b/components-starter/camel-micrometer-starter/src/main/java/org/apache/camel/component/micrometer/springboot/MicrometerTagsAutoConfiguration.java
index 36e6343c860..5c8948b279a 100644
--- a/components-starter/camel-micrometer-starter/src/main/java/org/apache/camel/component/micrometer/springboot/MicrometerTagsAutoConfiguration.java
+++ b/components-starter/camel-micrometer-starter/src/main/java/org/apache/camel/component/micrometer/springboot/MicrometerTagsAutoConfiguration.java
@@ -20,22 +20,29 @@ import io.micrometer.core.instrument.Tag;
 import io.micrometer.core.instrument.Tags;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
+import org.apache.camel.CamelContext;
 import org.apache.camel.spring.boot.CamelAutoConfiguration;
 import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.actuate.metrics.web.servlet.DefaultWebMvcTagsProvider;
 import org.springframework.boot.actuate.metrics.web.servlet.WebMvcTagsProvider;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
 
 @Configuration(proxyBeanMethods = false)
-@Conditional(ConditionalOnCamelContextAndAutoConfigurationBeans.class)
+@Conditional({ConditionalOnCamelContextAndAutoConfigurationBeans.class})
+@ConditionalOnProperty(prefix = "camel.metrics", name = "uriTagExpandValues", havingValue = "true")
 @AutoConfigureAfter({CamelAutoConfiguration.class})
 public class MicrometerTagsAutoConfiguration {
 
+    @Autowired
+    CamelContext camelContext;
+
     /**
-     * To integrate with micrometer to include uri in tags when for example using
+     * To integrate with micrometer to include expanded uri in tags when for example using
      * camel rest-dsl with servlet.
      */
     @Bean
@@ -44,6 +51,9 @@ public class MicrometerTagsAutoConfiguration {
             @Override
             public Iterable<Tag> getTags(HttpServletRequest request, HttpServletResponse response,
                                          Object handler, Throwable exception) {
+
+                camelContext.getComponent("servlet");
+
                 String uri = request.getServletPath();
                 if (uri == null || uri.isEmpty()) {
                     uri = request.getPathInfo();
diff --git a/components-starter/camel-micrometer-starter/src/main/java/org/apache/camel/component/micrometer/springboot/metrics/CamelMetricsConfiguration.java b/components-starter/camel-micrometer-starter/src/main/java/org/apache/camel/component/micrometer/springboot/metrics/CamelMetricsConfiguration.java
index 5bdeae53ab0..ed048170b3d 100644
--- a/components-starter/camel-micrometer-starter/src/main/java/org/apache/camel/component/micrometer/springboot/metrics/CamelMetricsConfiguration.java
+++ b/components-starter/camel-micrometer-starter/src/main/java/org/apache/camel/component/micrometer/springboot/metrics/CamelMetricsConfiguration.java
@@ -21,6 +21,16 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 @ConfigurationProperties(prefix = "camel.metrics")
 public class CamelMetricsConfiguration {
 
+    /**
+     * Whether HTTP uri tags should be expanded or not. For example a REST service defined with
+     * base URL: /users/{id} will capture metrics with uri tag: /users/{id}.
+     *
+     * There can be some use-cases where you want to expand the URI tag to include the actual requested value instead,
+     * so the uri tag will be something like: /users/123
+     * However this can lead to many tags as the URI is dynamic, so use this with care.
+     */
+    private boolean uriTagExpandValues;
+
     /**
      * Set whether to enable the MicrometerRoutePolicyFactory for capturing metrics
      * on route processing times.
@@ -48,6 +58,14 @@ public class CamelMetricsConfiguration {
      */
     private boolean enableRouteEventNotifier = true;
 
+    public boolean isUriTagExpandValues() {
+        return uriTagExpandValues;
+    }
+
+    public void setUriTagExpandValues(boolean uriTagExpandValues) {
+        this.uriTagExpandValues = uriTagExpandValues;
+    }
+
     public boolean isEnableRoutePolicy() {
         return enableRoutePolicy;
     }


[camel-spring-boot] 02/02: Regen

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-spring-boot.git

commit b301c4fdf49ec5c704ca215efc38a338782eaae2
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Mar 18 11:54:09 2023 +0100

    Regen
---
 .../camel/springboot/catalog/components/http.json  | 27 ++++---
 .../camel/springboot/catalog/components/https.json | 27 ++++---
 .../springboot/catalog/components/weather.json     |  2 +-
 .../springboot/catalog/components/workday.json     |  2 +-
 components-starter/camel-box-starter/pom.xml       |  8 --
 components-starter/camel-cm-sms-starter/pom.xml    |  8 --
 components-starter/camel-geocoder-starter/pom.xml  |  8 --
 components-starter/camel-graphql-starter/pom.xml   |  8 --
 components-starter/camel-http-starter/pom.xml      |  8 --
 .../camel-http-starter/src/main/docs/http.json     | 45 ++++++-----
 .../springboot/HttpComponentConfiguration.java     | 93 ++++++++++++++--------
 .../http/springboot/HttpComponentConverter.java    | 14 ++--
 .../src/main/docs/micrometer.json                  |  4 +-
 .../MicrometerTagsAutoConfiguration.java           |  5 +-
 .../metrics/CamelMetricsConfiguration.java         | 19 ++---
 components-starter/camel-oaipmh-starter/pom.xml    |  8 --
 .../camel-sap-netweaver-starter/pom.xml            |  8 --
 components-starter/camel-weather-starter/pom.xml   |  8 --
 components-starter/camel-workday-starter/pom.xml   |  8 --
 19 files changed, 138 insertions(+), 172 deletions(-)

diff --git a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/http.json b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/http.json
index 5fde9d2c574..a1007a00b0c 100644
--- a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/http.json
+++ b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/http.json
@@ -3,7 +3,7 @@
     "kind": "component",
     "name": "http",
     "title": "HTTP",
-    "description": "Send requests to external HTTP servers using Apache HTTP Client 4.x.",
+    "description": "Send requests to external HTTP servers using Apache HTTP Client 5.x.",
     "deprecated": false,
     "deprecationNote": "",
     "firstVersion": "2.3.0",
@@ -27,7 +27,7 @@
   "componentProperties": {
     "followRedirects": { "kind": "property", "displayName": "Follow Redirects", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to the HTTP request should follow redirects. By default the HTTP request does not follow redirects" },
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during star [...]
-    "cookieStore": { "kind": "property", "displayName": "Cookie Store", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "object", "javaType": "org.apache.http.client.CookieStore", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom org.apache.http.client.CookieStore. By default the org.apache.http.impl.client.BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then t [...]
+    "cookieStore": { "kind": "property", "displayName": "Cookie Store", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "object", "javaType": "org.apache.hc.client5.http.cookie.CookieStore", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom org.apache.hc.client5.http.cookie.CookieStore. By default the org.apache.hc.client5.http.cookie.BasicCookieStore is used which is an in-memory only cookie store. Notice i [...]
     "copyHeaders": { "kind": "property", "displayName": "Copy Headers", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "If this option is true then IN exchange headers will be copied to OUT exchange headers according to copy strategy. Setting this to false, allows to only include the headers from the HTTP response (not  [...]
     "responsePayloadStreamingThreshold": { "kind": "property", "displayName": "Response Payload Streaming Threshold", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 8192, "description": "This threshold in bytes controls whether the response payload should be stored in memory as a byte array or be streaming based. Set this to -1 to always use st [...]
     "skipRequestHeaders": { "kind": "property", "displayName": "Skip Request Headers", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip mapping all the Camel headers as HTTP request headers. If there are no data from Camel headers needed to be included in the HTTP request then this can avoid parsing over [...]
@@ -36,7 +36,7 @@
     "authCachingDisabled": { "kind": "property", "displayName": "Auth Caching Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Disables authentication scheme caching" },
     "automaticRetriesDisabled": { "kind": "property", "displayName": "Automatic Retries Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Disables automatic request recovery and re-execution" },
     "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which t [...]
-    "clientConnectionManager": { "kind": "property", "displayName": "Client Connection Manager", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.http.conn.HttpClientConnectionManager", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom and shared HttpClientConnectionManager to manage connections. If this has been configured then this is always used for all endpoints created by this component." },
+    "clientConnectionManager": { "kind": "property", "displayName": "Client Connection Manager", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.hc.client5.http.io.HttpClientConnectionManager", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom and shared HttpClientConnectionManager to manage connections. If this has been configured then this is always used for all endpoints created by this comp [...]
     "connectionsPerRoute": { "kind": "property", "displayName": "Connections Per Route", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 20, "description": "The maximum number of connections per route." },
     "connectionStateDisabled": { "kind": "property", "displayName": "Connection State Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Disables connection state tracking" },
     "connectionTimeToLive": { "kind": "property", "displayName": "Connection Time To Live", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "description": "The time for connection to live, the time unit is millisecond, the default value is always keep alive." },
@@ -46,7 +46,7 @@
     "httpBinding": { "kind": "property", "displayName": "Http Binding", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.http.common.HttpBinding", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom HttpBinding to control the mapping between Camel message and HttpClient." },
     "httpClientConfigurer": { "kind": "property", "displayName": "Http Client Configurer", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.http.HttpClientConfigurer", "deprecated": false, "autowired": false, "secret": false, "description": "To use the custom HttpClientConfigurer to perform configuration of the HttpClient that will be used." },
     "httpConfiguration": { "kind": "property", "displayName": "Http Configuration", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.http.common.HttpConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "To use the shared HttpConfiguration as base configuration." },
-    "httpContext": { "kind": "property", "displayName": "Http Context", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.http.protocol.HttpContext", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom org.apache.http.protocol.HttpContext when executing requests." },
+    "httpContext": { "kind": "property", "displayName": "Http Context", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.hc.core5.http.protocol.HttpContext", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom org.apache.hc.core5.http.protocol.HttpContext when executing requests." },
     "maxTotalConnections": { "kind": "property", "displayName": "Max Total Connections", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 200, "description": "The maximum number of connections." },
     "redirectHandlingDisabled": { "kind": "property", "displayName": "Redirect Handling Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Disables automatic redirect handling" },
     "headerFilterStrategy": { "kind": "property", "displayName": "Header Filter Strategy", "group": "filter", "label": "filter", "required": false, "type": "object", "javaType": "org.apache.camel.spi.HeaderFilterStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message." },
@@ -61,9 +61,11 @@
     "sslContextParameters": { "kind": "property", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "To configure security using SSLContextParameters. Important: Only one instance of org.apache.camel.support.jsse.SSLContextParameters is supported per HttpComponent. If you need to us [...]
     "useGlobalSslContextParameters": { "kind": "property", "displayName": "Use Global Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enable usage of global SSL context parameters." },
     "x509HostnameVerifier": { "kind": "property", "displayName": "X509 Hostname Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "javax.net.ssl.HostnameVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom X509HostnameVerifier such as DefaultHostnameVerifier or NoopHostnameVerifier." },
-    "connectionRequestTimeout": { "kind": "property", "displayName": "Connection Request Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "description": "The timeout in milliseconds used when requesting a connection from the connection manager. A timeout value of zero is interpreted as an infinite timeout. A timeout value of zero is interpreted as an inf [...]
-    "connectTimeout": { "kind": "property", "displayName": "Connect Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "description": "Determines the timeout in milliseconds until a connection is established. A timeout value of zero is interpreted as an infinite timeout. A timeout value of zero is interpreted as an infinite timeout. A negative value is int [...]
-    "socketTimeout": { "kind": "property", "displayName": "Socket Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "description": "Defines the socket timeout in milliseconds, which is the timeout for waiting for data or, put differently, a maximum period inactivity between two consecutive data packets). A timeout value of zero is interpreted as an infini [...]
+    "connectionRequestTimeout": { "kind": "property", "displayName": "Connection Request Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "3 minutes", "description": "Returns the connection lease request timeout used when requesting a connection from the connection manager. A timeout value of zero is interpreted as a disabled time [...]
+    "connectTimeout": { "kind": "property", "displayName": "Connect Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "3 minutes", "description": "Determines the timeout until a new connection is fully established. A timeout value of zero is interpreted as an infinite timeout." },
+    "responseTimeout": { "kind": "property", "displayName": "Response Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "0", "description": "Determines the timeout until arrival of a response from the opposite endpoint. A timeout value of zero is interpreted as an infinite timeout. Please note that response timeout may be unsupport [...]
+    "socketTimeout": { "kind": "property", "displayName": "Socket Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "null (undefined)", "description": "Determines the default socket timeout value for I\/O operations." },
+    "soTimeout": { "kind": "property", "displayName": "So Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "3 minutes", "description": "Determines the default socket timeout value for blocking I\/O operations." }
   },
   "headers": {
     "Content-Encoding": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The HTTP content encoding. Is set on both the IN and OUT message to provide a content encoding, such as gzip.", "constantName": "org.apache.camel.component.http.HttpConstants#CONTENT_ENCODING" },
@@ -92,7 +94,7 @@
     "throwExceptionOnFailure": { "kind": "parameter", "displayName": "Throw Exception On Failure", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code." },
     "clearExpiredCookies": { "kind": "parameter", "displayName": "Clear Expired Cookies", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to clear expired cookies before sending the HTTP request. This ensures the cookies store does not keep growing by adding new cookies which is newer removed when they are expir [...]
     "cookieHandler": { "kind": "parameter", "displayName": "Cookie Handler", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.http.base.cookie.CookieHandler", "deprecated": false, "autowired": false, "secret": false, "description": "Configure a cookie handler to maintain a HTTP session" },
-    "cookieStore": { "kind": "parameter", "displayName": "Cookie Store", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "object", "javaType": "org.apache.http.client.CookieStore", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom CookieStore. By default the BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop cookie stor [...]
+    "cookieStore": { "kind": "parameter", "displayName": "Cookie Store", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "object", "javaType": "org.apache.hc.client5.http.cookie.CookieStore", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom CookieStore. By default the BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop  [...]
     "copyHeaders": { "kind": "parameter", "displayName": "Copy Headers", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "If this option is true then IN exchange headers will be copied to OUT exchange headers according to copy strategy. Setting this to false, allows to only include the headers from the HTTP response (not [...]
     "customHostHeader": { "kind": "parameter", "displayName": "Custom Host Header", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To use custom host header for producer. When not set in query will be ignored. When set will override host header derived from url." },
     "deleteWithBody": { "kind": "parameter", "displayName": "Delete With Body", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the HTTP DELETE should include the message body or not. By default HTTP DELETE do not include any HTTP body. However in some rare cases users may need to be able to include the message [...]
@@ -104,13 +106,14 @@
     "skipRequestHeaders": { "kind": "parameter", "displayName": "Skip Request Headers", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip mapping all the Camel headers as HTTP request headers. If there are no data from Camel headers needed to be included in the HTTP request then this can avoid parsing ove [...]
     "skipResponseHeaders": { "kind": "parameter", "displayName": "Skip Response Headers", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip mapping all the HTTP response headers to Camel headers. If there are no data needed from HTTP headers then this can avoid parsing overhead with many object allocation [...]
     "userAgent": { "kind": "parameter", "displayName": "User Agent", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To set a custom HTTP User-Agent request header" },
-    "clientBuilder": { "kind": "parameter", "displayName": "Client Builder", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.http.impl.client.HttpClientBuilder", "deprecated": false, "autowired": false, "secret": false, "description": "Provide access to the http client request parameters used on new RequestConfig instances used by producers or consumers of this endpoint." },
-    "clientConnectionManager": { "kind": "parameter", "displayName": "Client Connection Manager", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.http.conn.HttpClientConnectionManager", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom HttpClientConnectionManager to manage connections" },
+    "clientBuilder": { "kind": "parameter", "displayName": "Client Builder", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.hc.client5.http.impl.classic.HttpClientBuilder", "deprecated": false, "autowired": false, "secret": false, "description": "Provide access to the http client request parameters used on new RequestConfig instances used by producers or consumers of this endpoint." },
+    "clientConnectionManager": { "kind": "parameter", "displayName": "Client Connection Manager", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.hc.client5.http.io.HttpClientConnectionManager", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom HttpClientConnectionManager to manage connections" },
     "connectionsPerRoute": { "kind": "parameter", "displayName": "Connections Per Route", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 20, "description": "The maximum number of connections per route." },
-    "httpClient": { "kind": "parameter", "displayName": "Http Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.http.client.HttpClient", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a custom HttpClient to be used by the producer" },
+    "httpClient": { "kind": "parameter", "displayName": "Http Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.hc.client5.http.classic.HttpClient", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a custom HttpClient to be used by the producer" },
     "httpClientConfigurer": { "kind": "parameter", "displayName": "Http Client Configurer", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.http.HttpClientConfigurer", "deprecated": false, "autowired": false, "secret": false, "description": "Register a custom configuration strategy for new HttpClient instances created by producers or consumers such as to configure authentication mechanisms etc." },
     "httpClientOptions": { "kind": "parameter", "displayName": "Http Client Options", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "httpClient.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure the HttpClient using the key\/values from the Map." },
-    "httpContext": { "kind": "parameter", "displayName": "Http Context", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.http.protocol.HttpContext", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom HttpContext instance" },
+    "httpConnectionOptions": { "kind": "parameter", "displayName": "Http Connection Options", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "httpConnection.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure the connection and the socket using the key\/values from the Map." },
+    "httpContext": { "kind": "parameter", "displayName": "Http Context", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.hc.core5.http.protocol.HttpContext", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom HttpContext instance" },
     "maxTotalConnections": { "kind": "parameter", "displayName": "Max Total Connections", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 200, "description": "The maximum number of connections." },
     "useSystemProperties": { "kind": "parameter", "displayName": "Use System Properties", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "To use System Properties as fallback for configuration" },
     "proxyAuthDomain": { "kind": "parameter", "displayName": "Proxy Auth Domain", "group": "proxy", "label": "producer,proxy", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Proxy authentication domain to use with NTML" },
diff --git a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/https.json b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/https.json
index 9a6a2bc5bb7..110f698f8d3 100644
--- a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/https.json
+++ b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/https.json
@@ -3,7 +3,7 @@
     "kind": "component",
     "name": "https",
     "title": "HTTPS (Secure)",
-    "description": "Send requests to external HTTP servers using Apache HTTP Client 4.x.",
+    "description": "Send requests to external HTTP servers using Apache HTTP Client 5.x.",
     "deprecated": false,
     "deprecationNote": "",
     "firstVersion": "2.3.0",
@@ -27,7 +27,7 @@
   "componentProperties": {
     "followRedirects": { "kind": "property", "displayName": "Follow Redirects", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to the HTTP request should follow redirects. By default the HTTP request does not follow redirects" },
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during star [...]
-    "cookieStore": { "kind": "property", "displayName": "Cookie Store", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "object", "javaType": "org.apache.http.client.CookieStore", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom org.apache.http.client.CookieStore. By default the org.apache.http.impl.client.BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then t [...]
+    "cookieStore": { "kind": "property", "displayName": "Cookie Store", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "object", "javaType": "org.apache.hc.client5.http.cookie.CookieStore", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom org.apache.hc.client5.http.cookie.CookieStore. By default the org.apache.hc.client5.http.cookie.BasicCookieStore is used which is an in-memory only cookie store. Notice i [...]
     "copyHeaders": { "kind": "property", "displayName": "Copy Headers", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "If this option is true then IN exchange headers will be copied to OUT exchange headers according to copy strategy. Setting this to false, allows to only include the headers from the HTTP response (not  [...]
     "responsePayloadStreamingThreshold": { "kind": "property", "displayName": "Response Payload Streaming Threshold", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 8192, "description": "This threshold in bytes controls whether the response payload should be stored in memory as a byte array or be streaming based. Set this to -1 to always use st [...]
     "skipRequestHeaders": { "kind": "property", "displayName": "Skip Request Headers", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip mapping all the Camel headers as HTTP request headers. If there are no data from Camel headers needed to be included in the HTTP request then this can avoid parsing over [...]
@@ -36,7 +36,7 @@
     "authCachingDisabled": { "kind": "property", "displayName": "Auth Caching Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Disables authentication scheme caching" },
     "automaticRetriesDisabled": { "kind": "property", "displayName": "Automatic Retries Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Disables automatic request recovery and re-execution" },
     "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which t [...]
-    "clientConnectionManager": { "kind": "property", "displayName": "Client Connection Manager", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.http.conn.HttpClientConnectionManager", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom and shared HttpClientConnectionManager to manage connections. If this has been configured then this is always used for all endpoints created by this component." },
+    "clientConnectionManager": { "kind": "property", "displayName": "Client Connection Manager", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.hc.client5.http.io.HttpClientConnectionManager", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom and shared HttpClientConnectionManager to manage connections. If this has been configured then this is always used for all endpoints created by this comp [...]
     "connectionsPerRoute": { "kind": "property", "displayName": "Connections Per Route", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 20, "description": "The maximum number of connections per route." },
     "connectionStateDisabled": { "kind": "property", "displayName": "Connection State Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Disables connection state tracking" },
     "connectionTimeToLive": { "kind": "property", "displayName": "Connection Time To Live", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "description": "The time for connection to live, the time unit is millisecond, the default value is always keep alive." },
@@ -46,7 +46,7 @@
     "httpBinding": { "kind": "property", "displayName": "Http Binding", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.http.common.HttpBinding", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom HttpBinding to control the mapping between Camel message and HttpClient." },
     "httpClientConfigurer": { "kind": "property", "displayName": "Http Client Configurer", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.http.HttpClientConfigurer", "deprecated": false, "autowired": false, "secret": false, "description": "To use the custom HttpClientConfigurer to perform configuration of the HttpClient that will be used." },
     "httpConfiguration": { "kind": "property", "displayName": "Http Configuration", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.http.common.HttpConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "To use the shared HttpConfiguration as base configuration." },
-    "httpContext": { "kind": "property", "displayName": "Http Context", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.http.protocol.HttpContext", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom org.apache.http.protocol.HttpContext when executing requests." },
+    "httpContext": { "kind": "property", "displayName": "Http Context", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.hc.core5.http.protocol.HttpContext", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom org.apache.hc.core5.http.protocol.HttpContext when executing requests." },
     "maxTotalConnections": { "kind": "property", "displayName": "Max Total Connections", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 200, "description": "The maximum number of connections." },
     "redirectHandlingDisabled": { "kind": "property", "displayName": "Redirect Handling Disabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Disables automatic redirect handling" },
     "headerFilterStrategy": { "kind": "property", "displayName": "Header Filter Strategy", "group": "filter", "label": "filter", "required": false, "type": "object", "javaType": "org.apache.camel.spi.HeaderFilterStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter header to and from Camel message." },
@@ -61,9 +61,11 @@
     "sslContextParameters": { "kind": "property", "displayName": "Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.support.jsse.SSLContextParameters", "deprecated": false, "autowired": false, "secret": false, "description": "To configure security using SSLContextParameters. Important: Only one instance of org.apache.camel.support.jsse.SSLContextParameters is supported per HttpComponent. If you need to us [...]
     "useGlobalSslContextParameters": { "kind": "property", "displayName": "Use Global Ssl Context Parameters", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Enable usage of global SSL context parameters." },
     "x509HostnameVerifier": { "kind": "property", "displayName": "X509 Hostname Verifier", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "javax.net.ssl.HostnameVerifier", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom X509HostnameVerifier such as DefaultHostnameVerifier or NoopHostnameVerifier." },
-    "connectionRequestTimeout": { "kind": "property", "displayName": "Connection Request Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "description": "The timeout in milliseconds used when requesting a connection from the connection manager. A timeout value of zero is interpreted as an infinite timeout. A timeout value of zero is interpreted as an inf [...]
-    "connectTimeout": { "kind": "property", "displayName": "Connect Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "description": "Determines the timeout in milliseconds until a connection is established. A timeout value of zero is interpreted as an infinite timeout. A timeout value of zero is interpreted as an infinite timeout. A negative value is int [...]
-    "socketTimeout": { "kind": "property", "displayName": "Socket Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": -1, "description": "Defines the socket timeout in milliseconds, which is the timeout for waiting for data or, put differently, a maximum period inactivity between two consecutive data packets). A timeout value of zero is interpreted as an infini [...]
+    "connectionRequestTimeout": { "kind": "property", "displayName": "Connection Request Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "3 minutes", "description": "Returns the connection lease request timeout used when requesting a connection from the connection manager. A timeout value of zero is interpreted as a disabled time [...]
+    "connectTimeout": { "kind": "property", "displayName": "Connect Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "3 minutes", "description": "Determines the timeout until a new connection is fully established. A timeout value of zero is interpreted as an infinite timeout." },
+    "responseTimeout": { "kind": "property", "displayName": "Response Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "0", "description": "Determines the timeout until arrival of a response from the opposite endpoint. A timeout value of zero is interpreted as an infinite timeout. Please note that response timeout may be unsupport [...]
+    "socketTimeout": { "kind": "property", "displayName": "Socket Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "null (undefined)", "description": "Determines the default socket timeout value for I\/O operations." },
+    "soTimeout": { "kind": "property", "displayName": "So Timeout", "group": "timeout", "label": "timeout", "required": false, "type": "object", "javaType": "org.apache.hc.core5.util.Timeout", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "3 minutes", "description": "Determines the default socket timeout value for blocking I\/O operations." }
   },
   "headers": {
     "Content-Encoding": { "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The HTTP content encoding. Is set on both the IN and OUT message to provide a content encoding, such as gzip.", "constantName": "org.apache.camel.component.http.HttpConstants#CONTENT_ENCODING" },
@@ -92,7 +94,7 @@
     "throwExceptionOnFailure": { "kind": "parameter", "displayName": "Throw Exception On Failure", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code." },
     "clearExpiredCookies": { "kind": "parameter", "displayName": "Clear Expired Cookies", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to clear expired cookies before sending the HTTP request. This ensures the cookies store does not keep growing by adding new cookies which is newer removed when they are expir [...]
     "cookieHandler": { "kind": "parameter", "displayName": "Cookie Handler", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.http.base.cookie.CookieHandler", "deprecated": false, "autowired": false, "secret": false, "description": "Configure a cookie handler to maintain a HTTP session" },
-    "cookieStore": { "kind": "parameter", "displayName": "Cookie Store", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "object", "javaType": "org.apache.http.client.CookieStore", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom CookieStore. By default the BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop cookie stor [...]
+    "cookieStore": { "kind": "parameter", "displayName": "Cookie Store", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "object", "javaType": "org.apache.hc.client5.http.cookie.CookieStore", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom CookieStore. By default the BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop  [...]
     "copyHeaders": { "kind": "parameter", "displayName": "Copy Headers", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "If this option is true then IN exchange headers will be copied to OUT exchange headers according to copy strategy. Setting this to false, allows to only include the headers from the HTTP response (not [...]
     "customHostHeader": { "kind": "parameter", "displayName": "Custom Host Header", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To use custom host header for producer. When not set in query will be ignored. When set will override host header derived from url." },
     "deleteWithBody": { "kind": "parameter", "displayName": "Delete With Body", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the HTTP DELETE should include the message body or not. By default HTTP DELETE do not include any HTTP body. However in some rare cases users may need to be able to include the message [...]
@@ -104,13 +106,14 @@
     "skipRequestHeaders": { "kind": "parameter", "displayName": "Skip Request Headers", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip mapping all the Camel headers as HTTP request headers. If there are no data from Camel headers needed to be included in the HTTP request then this can avoid parsing ove [...]
     "skipResponseHeaders": { "kind": "parameter", "displayName": "Skip Response Headers", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether to skip mapping all the HTTP response headers to Camel headers. If there are no data needed from HTTP headers then this can avoid parsing overhead with many object allocation [...]
     "userAgent": { "kind": "parameter", "displayName": "User Agent", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "To set a custom HTTP User-Agent request header" },
-    "clientBuilder": { "kind": "parameter", "displayName": "Client Builder", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.http.impl.client.HttpClientBuilder", "deprecated": false, "autowired": false, "secret": false, "description": "Provide access to the http client request parameters used on new RequestConfig instances used by producers or consumers of this endpoint." },
-    "clientConnectionManager": { "kind": "parameter", "displayName": "Client Connection Manager", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.http.conn.HttpClientConnectionManager", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom HttpClientConnectionManager to manage connections" },
+    "clientBuilder": { "kind": "parameter", "displayName": "Client Builder", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.hc.client5.http.impl.classic.HttpClientBuilder", "deprecated": false, "autowired": false, "secret": false, "description": "Provide access to the http client request parameters used on new RequestConfig instances used by producers or consumers of this endpoint." },
+    "clientConnectionManager": { "kind": "parameter", "displayName": "Client Connection Manager", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.hc.client5.http.io.HttpClientConnectionManager", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom HttpClientConnectionManager to manage connections" },
     "connectionsPerRoute": { "kind": "parameter", "displayName": "Connections Per Route", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 20, "description": "The maximum number of connections per route." },
-    "httpClient": { "kind": "parameter", "displayName": "Http Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.http.client.HttpClient", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a custom HttpClient to be used by the producer" },
+    "httpClient": { "kind": "parameter", "displayName": "Http Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.hc.client5.http.classic.HttpClient", "deprecated": false, "autowired": false, "secret": false, "description": "Sets a custom HttpClient to be used by the producer" },
     "httpClientConfigurer": { "kind": "parameter", "displayName": "Http Client Configurer", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.http.HttpClientConfigurer", "deprecated": false, "autowired": false, "secret": false, "description": "Register a custom configuration strategy for new HttpClient instances created by producers or consumers such as to configure authentication mechanisms etc." },
     "httpClientOptions": { "kind": "parameter", "displayName": "Http Client Options", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "httpClient.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure the HttpClient using the key\/values from the Map." },
-    "httpContext": { "kind": "parameter", "displayName": "Http Context", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.http.protocol.HttpContext", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom HttpContext instance" },
+    "httpConnectionOptions": { "kind": "parameter", "displayName": "Http Connection Options", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "httpConnection.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure the connection and the socket using the key\/values from the Map." },
+    "httpContext": { "kind": "parameter", "displayName": "Http Context", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.hc.core5.http.protocol.HttpContext", "deprecated": false, "autowired": false, "secret": false, "description": "To use a custom HttpContext instance" },
     "maxTotalConnections": { "kind": "parameter", "displayName": "Max Total Connections", "group": "advanced", "label": "advanced", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 200, "description": "The maximum number of connections." },
     "useSystemProperties": { "kind": "parameter", "displayName": "Use System Properties", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "To use System Properties as fallback for configuration" },
     "proxyAuthDomain": { "kind": "parameter", "displayName": "Proxy Auth Domain", "group": "proxy", "label": "producer,proxy", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Proxy authentication domain to use with NTML" },
diff --git a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/weather.json b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/weather.json
index 0c96b46f83d..68b0cbc2a91 100644
--- a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/weather.json
+++ b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/weather.json
@@ -46,7 +46,7 @@
     "pollStrategy": { "kind": "parameter", "displayName": "Poll Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation  [...]
     "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may other [...]
     "geoLocationProvider": { "kind": "parameter", "displayName": "Geo Location Provider", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.weather.geolocation.GeoLocationProvider", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.weather.WeatherConfiguration", "configurationField": "configuration", "description": "A custum geolocation provider to determine the  [...]
-    "httpClient": { "kind": "parameter", "displayName": "Http Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.http.impl.client.CloseableHttpClient", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.weather.WeatherConfiguration", "configurationField": "configuration", "description": "To use an existing configured http client (for example with http proxy)" },
+    "httpClient": { "kind": "parameter", "displayName": "Http Client", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.hc.client5.http.impl.classic.CloseableHttpClient", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.weather.WeatherConfiguration", "configurationField": "configuration", "description": "To use an existing configured http client (for example with http proxy)" },
     "cnt": { "kind": "parameter", "displayName": "Cnt", "group": "filter", "label": "filter", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.weather.WeatherConfiguration", "configurationField": "configuration", "description": "Number of results to be found" },
     "ids": { "kind": "parameter", "displayName": "Ids", "group": "filter", "label": "filter", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.weather.WeatherConfiguration", "configurationField": "configuration", "description": "List of id's of city\/stations. You can separate multiple ids by comma." },
     "lat": { "kind": "parameter", "displayName": "Lat", "group": "filter", "label": "filter", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.weather.WeatherConfiguration", "configurationField": "configuration", "description": "Latitude of location. You can use lat and lon options instead of location. For boxed queries this is the bottom latitude." },
diff --git a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/workday.json b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/workday.json
index fb8f6e346b5..8c1ccbdde45 100644
--- a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/workday.json
+++ b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/workday.json
@@ -32,7 +32,7 @@
     "entity": { "kind": "path", "displayName": "Entity", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.workday.WorkdayConfiguration.Entity", "enum": [ "report", "commonAPI" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.workday.WorkdayConfiguration", "configurationField": "workdayConfiguration", "description": "The entity to be requested o [...]
     "path": { "kind": "path", "displayName": "Path", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.workday.WorkdayConfiguration", "configurationField": "workdayConfiguration", "description": "The API path to access an entity structure." },
     "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may other [...]
-    "httpConnectionManager": { "kind": "parameter", "displayName": "Http Connection Manager", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.http.impl.conn.PoolingHttpClientConnectionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.workday.WorkdayConfiguration", "configurationField": "workdayConfiguration", "description": "Pool connection manager for advanced confi [...]
+    "httpConnectionManager": { "kind": "parameter", "displayName": "Http Connection Manager", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.workday.WorkdayConfiguration", "configurationField": "workdayConfiguration", "description": "Pool connection manager for advan [...]
     "reportFormat": { "kind": "parameter", "displayName": "Report Format", "group": "format", "label": "format", "required": false, "type": "string", "javaType": "java.lang.String", "enum": [ "json" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "json", "configurationClass": "org.apache.camel.component.workday.WorkdayConfiguration", "configurationField": "workdayConfiguration", "description": "Workday Report as a service output format." },
     "host": { "kind": "parameter", "displayName": "Host", "group": "host", "label": "host", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.workday.WorkdayConfiguration", "configurationField": "workdayConfiguration", "description": "Workday Host name." },
     "clientId": { "kind": "parameter", "displayName": "Client Id", "group": "security", "label": "security", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.workday.WorkdayConfiguration", "configurationField": "workdayConfiguration", "description": "Workday client Id generated by API client for integrations." },
diff --git a/components-starter/camel-box-starter/pom.xml b/components-starter/camel-box-starter/pom.xml
index eada5f6a1da..b84c55b1feb 100644
--- a/components-starter/camel-box-starter/pom.xml
+++ b/components-starter/camel-box-starter/pom.xml
@@ -38,14 +38,6 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-box</artifactId>
       <version>${camel-version}</version>
-      <!--START OF GENERATED CODE-->
-      <exclusions>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-      </exclusions>
-      <!--END OF GENERATED CODE-->
     </dependency>
     <!--START OF GENERATED CODE-->
     <dependency>
diff --git a/components-starter/camel-cm-sms-starter/pom.xml b/components-starter/camel-cm-sms-starter/pom.xml
index a1c7fcca5d7..bf229655db2 100644
--- a/components-starter/camel-cm-sms-starter/pom.xml
+++ b/components-starter/camel-cm-sms-starter/pom.xml
@@ -38,14 +38,6 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-cm-sms</artifactId>
       <version>${camel-version}</version>
-      <!--START OF GENERATED CODE-->
-      <exclusions>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-      </exclusions>
-      <!--END OF GENERATED CODE-->
     </dependency>
     <!--START OF GENERATED CODE-->
     <dependency>
diff --git a/components-starter/camel-geocoder-starter/pom.xml b/components-starter/camel-geocoder-starter/pom.xml
index 9f912099c77..a486107b5b6 100644
--- a/components-starter/camel-geocoder-starter/pom.xml
+++ b/components-starter/camel-geocoder-starter/pom.xml
@@ -38,14 +38,6 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-geocoder</artifactId>
       <version>${camel-version}</version>
-      <!--START OF GENERATED CODE-->
-      <exclusions>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-      </exclusions>
-      <!--END OF GENERATED CODE-->
     </dependency>
     <!--START OF GENERATED CODE-->
     <dependency>
diff --git a/components-starter/camel-graphql-starter/pom.xml b/components-starter/camel-graphql-starter/pom.xml
index dba830801d1..3d2d3006923 100644
--- a/components-starter/camel-graphql-starter/pom.xml
+++ b/components-starter/camel-graphql-starter/pom.xml
@@ -38,14 +38,6 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-graphql</artifactId>
       <version>${camel-version}</version>
-      <!--START OF GENERATED CODE-->
-      <exclusions>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-      </exclusions>
-      <!--END OF GENERATED CODE-->
     </dependency>
     <!--START OF GENERATED CODE-->
     <dependency>
diff --git a/components-starter/camel-http-starter/pom.xml b/components-starter/camel-http-starter/pom.xml
index 862b76e0606..891bb7fb7de 100644
--- a/components-starter/camel-http-starter/pom.xml
+++ b/components-starter/camel-http-starter/pom.xml
@@ -38,14 +38,6 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-http</artifactId>
       <version>${camel-version}</version>
-      <!--START OF GENERATED CODE-->
-      <exclusions>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-      </exclusions>
-      <!--END OF GENERATED CODE-->
     </dependency>
     <!--START OF GENERATED CODE-->
     <dependency>
diff --git a/components-starter/camel-http-starter/src/main/docs/http.json b/components-starter/camel-http-starter/src/main/docs/http.json
index 07da32295a3..745eff848e9 100644
--- a/components-starter/camel-http-starter/src/main/docs/http.json
+++ b/components-starter/camel-http-starter/src/main/docs/http.json
@@ -43,23 +43,21 @@
     },
     {
       "name": "camel.component.http.client-connection-manager",
-      "type": "org.apache.http.conn.HttpClientConnectionManager",
-      "description": "To use a custom and shared HttpClientConnectionManager to manage connections. If this has been configured then this is always used for all endpoints created by this component. The option is a org.apache.http.conn.HttpClientConnectionManager type.",
+      "type": "org.apache.hc.client5.http.io.HttpClientConnectionManager",
+      "description": "To use a custom and shared HttpClientConnectionManager to manage connections. If this has been configured then this is always used for all endpoints created by this component. The option is a org.apache.hc.client5.http.io.HttpClientConnectionManager type.",
       "sourceType": "org.apache.camel.component.http.springboot.HttpComponentConfiguration"
     },
     {
       "name": "camel.component.http.connect-timeout",
-      "type": "java.lang.Integer",
-      "description": "Determines the timeout in milliseconds until a connection is established. A timeout value of zero is interpreted as an infinite timeout. A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default).",
-      "sourceType": "org.apache.camel.component.http.springboot.HttpComponentConfiguration",
-      "defaultValue": -1
+      "type": "org.apache.hc.core5.util.Timeout",
+      "description": "Determines the timeout until a new connection is fully established. A timeout value of zero is interpreted as an infinite timeout. The option is a org.apache.hc.core5.util.Timeout type.",
+      "sourceType": "org.apache.camel.component.http.springboot.HttpComponentConfiguration"
     },
     {
       "name": "camel.component.http.connection-request-timeout",
-      "type": "java.lang.Integer",
-      "description": "The timeout in milliseconds used when requesting a connection from the connection manager. A timeout value of zero is interpreted as an infinite timeout. A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default).",
-      "sourceType": "org.apache.camel.component.http.springboot.HttpComponentConfiguration",
-      "defaultValue": -1
+      "type": "org.apache.hc.core5.util.Timeout",
+      "description": "Returns the connection lease request timeout used when requesting a connection from the connection manager. A timeout value of zero is interpreted as a disabled timeout. The option is a org.apache.hc.core5.util.Timeout type.",
+      "sourceType": "org.apache.camel.component.http.springboot.HttpComponentConfiguration"
     },
     {
       "name": "camel.component.http.connection-state-disabled",
@@ -97,8 +95,8 @@
     },
     {
       "name": "camel.component.http.cookie-store",
-      "type": "org.apache.http.client.CookieStore",
-      "description": "To use a custom org.apache.http.client.CookieStore. By default the org.apache.http.impl.client.BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop cookie store as cookie shouldn't be stored as we are just bridging (eg acting as a proxy). The option is a org.apache.http.client.CookieStore type.",
+      "type": "org.apache.hc.client5.http.cookie.CookieStore",
+      "description": "To use a custom org.apache.hc.client5.http.cookie.CookieStore. By default the org.apache.hc.client5.http.cookie.BasicCookieStore is used which is an in-memory only cookie store. Notice if bridgeEndpoint=true then the cookie store is forced to be a noop cookie store as cookie shouldn't be stored as we are just bridging (eg acting as a proxy). The option is a org.apache.hc.client5.http.cookie.CookieStore type.",
       "sourceType": "org.apache.camel.component.http.springboot.HttpComponentConfiguration"
     },
     {
@@ -159,8 +157,8 @@
     },
     {
       "name": "camel.component.http.http-context",
-      "type": "org.apache.http.protocol.HttpContext",
-      "description": "To use a custom org.apache.http.protocol.HttpContext when executing requests. The option is a org.apache.http.protocol.HttpContext type.",
+      "type": "org.apache.hc.core5.http.protocol.HttpContext",
+      "description": "To use a custom org.apache.hc.core5.http.protocol.HttpContext when executing requests. The option is a org.apache.hc.core5.http.protocol.HttpContext type.",
       "sourceType": "org.apache.camel.component.http.springboot.HttpComponentConfiguration"
     },
     {
@@ -239,6 +237,12 @@
       "sourceType": "org.apache.camel.component.http.springboot.HttpComponentConfiguration",
       "defaultValue": 8192
     },
+    {
+      "name": "camel.component.http.response-timeout",
+      "type": "org.apache.hc.core5.util.Timeout",
+      "description": "Determines the timeout until arrival of a response from the opposite endpoint. A timeout value of zero is interpreted as an infinite timeout. Please note that response timeout may be unsupported by HTTP transports with message multiplexing. The option is a org.apache.hc.core5.util.Timeout type.",
+      "sourceType": "org.apache.camel.component.http.springboot.HttpComponentConfiguration"
+    },
     {
       "name": "camel.component.http.skip-request-headers",
       "type": "java.lang.Boolean",
@@ -253,12 +257,17 @@
       "sourceType": "org.apache.camel.component.http.springboot.HttpComponentConfiguration",
       "defaultValue": false
     },
+    {
+      "name": "camel.component.http.so-timeout",
+      "type": "org.apache.hc.core5.util.Timeout",
+      "description": "Determines the default socket timeout value for blocking I\/O operations. The option is a org.apache.hc.core5.util.Timeout type.",
+      "sourceType": "org.apache.camel.component.http.springboot.HttpComponentConfiguration"
+    },
     {
       "name": "camel.component.http.socket-timeout",
-      "type": "java.lang.Integer",
-      "description": "Defines the socket timeout in milliseconds, which is the timeout for waiting for data or, put differently, a maximum period inactivity between two consecutive data packets). A timeout value of zero is interpreted as an infinite timeout. A negative value is interpreted as undefined (system default).",
-      "sourceType": "org.apache.camel.component.http.springboot.HttpComponentConfiguration",
-      "defaultValue": -1
+      "type": "org.apache.hc.core5.util.Timeout",
+      "description": "Determines the default socket timeout value for I\/O operations. The option is a org.apache.hc.core5.util.Timeout type.",
+      "sourceType": "org.apache.camel.component.http.springboot.HttpComponentConfiguration"
     },
     {
       "name": "camel.component.http.ssl-context-parameters",
diff --git a/components-starter/camel-http-starter/src/main/java/org/apache/camel/component/http/springboot/HttpComponentConfiguration.java b/components-starter/camel-http-starter/src/main/java/org/apache/camel/component/http/springboot/HttpComponentConfiguration.java
index 9c2e3e48f8e..ee03199d446 100644
--- a/components-starter/camel-http-starter/src/main/java/org/apache/camel/component/http/springboot/HttpComponentConfiguration.java
+++ b/components-starter/camel-http-starter/src/main/java/org/apache/camel/component/http/springboot/HttpComponentConfiguration.java
@@ -23,13 +23,14 @@ import org.apache.camel.http.common.HttpConfiguration;
 import org.apache.camel.spi.HeaderFilterStrategy;
 import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
 import org.apache.camel.support.jsse.SSLContextParameters;
-import org.apache.http.client.CookieStore;
-import org.apache.http.conn.HttpClientConnectionManager;
-import org.apache.http.protocol.HttpContext;
+import org.apache.hc.client5.http.cookie.CookieStore;
+import org.apache.hc.client5.http.io.HttpClientConnectionManager;
+import org.apache.hc.core5.http.protocol.HttpContext;
+import org.apache.hc.core5.util.Timeout;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
- * Send requests to external HTTP servers using Apache HTTP Client 4.x.
+ * Send requests to external HTTP servers using Apache HTTP Client 5.x.
  * 
  * Generated by camel-package-maven-plugin - do not edit this file!
  */
@@ -60,12 +61,12 @@ public class HttpComponentConfiguration
      */
     private Boolean lazyStartProducer = false;
     /**
-     * To use a custom org.apache.http.client.CookieStore. By default the
-     * org.apache.http.impl.client.BasicCookieStore is used which is an
-     * in-memory only cookie store. Notice if bridgeEndpoint=true then the
+     * To use a custom org.apache.hc.client5.http.cookie.CookieStore. By default
+     * the org.apache.hc.client5.http.cookie.BasicCookieStore is used which is
+     * an in-memory only cookie store. Notice if bridgeEndpoint=true then the
      * cookie store is forced to be a noop cookie store as cookie shouldn't be
      * stored as we are just bridging (eg acting as a proxy). The option is a
-     * org.apache.http.client.CookieStore type.
+     * org.apache.hc.client5.http.cookie.CookieStore type.
      */
     private CookieStore cookieStore;
     /**
@@ -123,7 +124,7 @@ public class HttpComponentConfiguration
      * To use a custom and shared HttpClientConnectionManager to manage
      * connections. If this has been configured then this is always used for all
      * endpoints created by this component. The option is a
-     * org.apache.http.conn.HttpClientConnectionManager type.
+     * org.apache.hc.client5.http.io.HttpClientConnectionManager type.
      */
     private HttpClientConnectionManager clientConnectionManager;
     /**
@@ -170,8 +171,9 @@ public class HttpComponentConfiguration
      */
     private HttpConfiguration httpConfiguration;
     /**
-     * To use a custom org.apache.http.protocol.HttpContext when executing
-     * requests. The option is a org.apache.http.protocol.HttpContext type.
+     * To use a custom org.apache.hc.core5.http.protocol.HttpContext when
+     * executing requests. The option is a
+     * org.apache.hc.core5.http.protocol.HttpContext type.
      */
     private HttpContext httpContext;
     /**
@@ -239,27 +241,36 @@ public class HttpComponentConfiguration
      */
     private HostnameVerifier x509HostnameVerifier;
     /**
-     * The timeout in milliseconds used when requesting a connection from the
-     * connection manager. A timeout value of zero is interpreted as an infinite
-     * timeout. A timeout value of zero is interpreted as an infinite timeout. A
-     * negative value is interpreted as undefined (system default).
+     * Returns the connection lease request timeout used when requesting a
+     * connection from the connection manager. A timeout value of zero is
+     * interpreted as a disabled timeout. The option is a
+     * org.apache.hc.core5.util.Timeout type.
      */
-    private Integer connectionRequestTimeout = -1;
+    private Timeout connectionRequestTimeout;
     /**
-     * Determines the timeout in milliseconds until a connection is established.
-     * A timeout value of zero is interpreted as an infinite timeout. A timeout
-     * value of zero is interpreted as an infinite timeout. A negative value is
-     * interpreted as undefined (system default).
+     * Determines the timeout until a new connection is fully established. A
+     * timeout value of zero is interpreted as an infinite timeout. The option
+     * is a org.apache.hc.core5.util.Timeout type.
      */
-    private Integer connectTimeout = -1;
+    private Timeout connectTimeout;
     /**
-     * Defines the socket timeout in milliseconds, which is the timeout for
-     * waiting for data or, put differently, a maximum period inactivity between
-     * two consecutive data packets). A timeout value of zero is interpreted as
-     * an infinite timeout. A negative value is interpreted as undefined (system
-     * default).
+     * Determines the timeout until arrival of a response from the opposite
+     * endpoint. A timeout value of zero is interpreted as an infinite timeout.
+     * Please note that response timeout may be unsupported by HTTP transports
+     * with message multiplexing. The option is a
+     * org.apache.hc.core5.util.Timeout type.
      */
-    private Integer socketTimeout = -1;
+    private Timeout responseTimeout;
+    /**
+     * Determines the default socket timeout value for I/O operations. The
+     * option is a org.apache.hc.core5.util.Timeout type.
+     */
+    private Timeout socketTimeout;
+    /**
+     * Determines the default socket timeout value for blocking I/O operations.
+     * The option is a org.apache.hc.core5.util.Timeout type.
+     */
+    private Timeout soTimeout;
 
     public Boolean getFollowRedirects() {
         return followRedirects;
@@ -555,27 +566,43 @@ public class HttpComponentConfiguration
         this.x509HostnameVerifier = x509HostnameVerifier;
     }
 
-    public Integer getConnectionRequestTimeout() {
+    public Timeout getConnectionRequestTimeout() {
         return connectionRequestTimeout;
     }
 
-    public void setConnectionRequestTimeout(Integer connectionRequestTimeout) {
+    public void setConnectionRequestTimeout(Timeout connectionRequestTimeout) {
         this.connectionRequestTimeout = connectionRequestTimeout;
     }
 
-    public Integer getConnectTimeout() {
+    public Timeout getConnectTimeout() {
         return connectTimeout;
     }
 
-    public void setConnectTimeout(Integer connectTimeout) {
+    public void setConnectTimeout(Timeout connectTimeout) {
         this.connectTimeout = connectTimeout;
     }
 
-    public Integer getSocketTimeout() {
+    public Timeout getResponseTimeout() {
+        return responseTimeout;
+    }
+
+    public void setResponseTimeout(Timeout responseTimeout) {
+        this.responseTimeout = responseTimeout;
+    }
+
+    public Timeout getSocketTimeout() {
         return socketTimeout;
     }
 
-    public void setSocketTimeout(Integer socketTimeout) {
+    public void setSocketTimeout(Timeout socketTimeout) {
         this.socketTimeout = socketTimeout;
     }
+
+    public Timeout getSoTimeout() {
+        return soTimeout;
+    }
+
+    public void setSoTimeout(Timeout soTimeout) {
+        this.soTimeout = soTimeout;
+    }
 }
\ No newline at end of file
diff --git a/components-starter/camel-http-starter/src/main/java/org/apache/camel/component/http/springboot/HttpComponentConverter.java b/components-starter/camel-http-starter/src/main/java/org/apache/camel/component/http/springboot/HttpComponentConverter.java
index 14345572a79..47814cb5f0c 100644
--- a/components-starter/camel-http-starter/src/main/java/org/apache/camel/component/http/springboot/HttpComponentConverter.java
+++ b/components-starter/camel-http-starter/src/main/java/org/apache/camel/component/http/springboot/HttpComponentConverter.java
@@ -39,15 +39,16 @@ public class HttpComponentConverter implements GenericConverter {
 
     public Set<ConvertiblePair> getConvertibleTypes() {
         Set<ConvertiblePair> answer = new LinkedHashSet<>();
-        answer.add(new ConvertiblePair(String.class, org.apache.http.client.CookieStore.class));
-        answer.add(new ConvertiblePair(String.class, org.apache.http.conn.HttpClientConnectionManager.class));
+        answer.add(new ConvertiblePair(String.class, org.apache.hc.client5.http.cookie.CookieStore.class));
+        answer.add(new ConvertiblePair(String.class, org.apache.hc.client5.http.io.HttpClientConnectionManager.class));
         answer.add(new ConvertiblePair(String.class, org.apache.camel.http.common.HttpBinding.class));
         answer.add(new ConvertiblePair(String.class, org.apache.camel.component.http.HttpClientConfigurer.class));
         answer.add(new ConvertiblePair(String.class, org.apache.camel.http.common.HttpConfiguration.class));
-        answer.add(new ConvertiblePair(String.class, org.apache.http.protocol.HttpContext.class));
+        answer.add(new ConvertiblePair(String.class, org.apache.hc.core5.http.protocol.HttpContext.class));
         answer.add(new ConvertiblePair(String.class, org.apache.camel.spi.HeaderFilterStrategy.class));
         answer.add(new ConvertiblePair(String.class, org.apache.camel.support.jsse.SSLContextParameters.class));
         answer.add(new ConvertiblePair(String.class, javax.net.ssl.HostnameVerifier.class));
+        answer.add(new ConvertiblePair(String.class, org.apache.hc.core5.util.Timeout.class));
         return answer;
     }
 
@@ -64,15 +65,16 @@ public class HttpComponentConverter implements GenericConverter {
         }
         ref = ref.startsWith("#bean:") ? ref.substring(6) : ref.substring(1);
         switch (targetType.getName()) {
-            case "org.apache.http.client.CookieStore": return applicationContext.getBean(ref, org.apache.http.client.CookieStore.class);
-            case "org.apache.http.conn.HttpClientConnectionManager": return applicationContext.getBean(ref, org.apache.http.conn.HttpClientConnectionManager.class);
+            case "org.apache.hc.client5.http.cookie.CookieStore": return applicationContext.getBean(ref, org.apache.hc.client5.http.cookie.CookieStore.class);
+            case "org.apache.hc.client5.http.io.HttpClientConnectionManager": return applicationContext.getBean(ref, org.apache.hc.client5.http.io.HttpClientConnectionManager.class);
             case "org.apache.camel.http.common.HttpBinding": return applicationContext.getBean(ref, org.apache.camel.http.common.HttpBinding.class);
             case "org.apache.camel.component.http.HttpClientConfigurer": return applicationContext.getBean(ref, org.apache.camel.component.http.HttpClientConfigurer.class);
             case "org.apache.camel.http.common.HttpConfiguration": return applicationContext.getBean(ref, org.apache.camel.http.common.HttpConfiguration.class);
-            case "org.apache.http.protocol.HttpContext": return applicationContext.getBean(ref, org.apache.http.protocol.HttpContext.class);
+            case "org.apache.hc.core5.http.protocol.HttpContext": return applicationContext.getBean(ref, org.apache.hc.core5.http.protocol.HttpContext.class);
             case "org.apache.camel.spi.HeaderFilterStrategy": return applicationContext.getBean(ref, org.apache.camel.spi.HeaderFilterStrategy.class);
             case "org.apache.camel.support.jsse.SSLContextParameters": return applicationContext.getBean(ref, org.apache.camel.support.jsse.SSLContextParameters.class);
             case "javax.net.ssl.HostnameVerifier": return applicationContext.getBean(ref, javax.net.ssl.HostnameVerifier.class);
+            case "org.apache.hc.core5.util.Timeout": return applicationContext.getBean(ref, org.apache.hc.core5.util.Timeout.class);
         }
         return null;
     }
diff --git a/components-starter/camel-micrometer-starter/src/main/docs/micrometer.json b/components-starter/camel-micrometer-starter/src/main/docs/micrometer.json
index 61705f360d1..523d6e9ca2d 100644
--- a/components-starter/camel-micrometer-starter/src/main/docs/micrometer.json
+++ b/components-starter/camel-micrometer-starter/src/main/docs/micrometer.json
@@ -78,9 +78,9 @@
       "defaultValue": true
     },
     {
-      "name": "camel.metrics.uri-tag-expand-values",
+      "name": "camel.metrics.uri-tag-enabled",
       "type": "java.lang.Boolean",
-      "description": "Whether HTTP uri tags should be expanded or not. For example a REST service defined with base URL: \/users\/{id} will capture metrics with uri tag: \/users\/{id}. There can be some use-cases where you want to expand the URI tag to include the actual requested value instead, so the uri tag will be something like: \/users\/123 However this can lead to many tags as the URI is dynamic, so use this with care.",
+      "description": "Whether HTTP uri tags should be enabled or not. For example a REST service defined with base URL: \/users\/{id} will capture metrics with uri tag with actual dynamic value such as: \/users\/123. However, this can lead to many tags as the URI is dynamic, so use this with care.",
       "sourceType": "org.apache.camel.component.micrometer.springboot.metrics.CamelMetricsConfiguration",
       "defaultValue": false
     }
diff --git a/components-starter/camel-micrometer-starter/src/main/java/org/apache/camel/component/micrometer/springboot/MicrometerTagsAutoConfiguration.java b/components-starter/camel-micrometer-starter/src/main/java/org/apache/camel/component/micrometer/springboot/MicrometerTagsAutoConfiguration.java
index 5c8948b279a..43c1a8fe342 100644
--- a/components-starter/camel-micrometer-starter/src/main/java/org/apache/camel/component/micrometer/springboot/MicrometerTagsAutoConfiguration.java
+++ b/components-starter/camel-micrometer-starter/src/main/java/org/apache/camel/component/micrometer/springboot/MicrometerTagsAutoConfiguration.java
@@ -34,7 +34,7 @@ import org.springframework.context.annotation.Configuration;
 
 @Configuration(proxyBeanMethods = false)
 @Conditional({ConditionalOnCamelContextAndAutoConfigurationBeans.class})
-@ConditionalOnProperty(prefix = "camel.metrics", name = "uriTagExpandValues", havingValue = "true")
+@ConditionalOnProperty(prefix = "camel.metrics", name = "uriTagEnabled", havingValue = "true")
 @AutoConfigureAfter({CamelAutoConfiguration.class})
 public class MicrometerTagsAutoConfiguration {
 
@@ -51,9 +51,6 @@ public class MicrometerTagsAutoConfiguration {
             @Override
             public Iterable<Tag> getTags(HttpServletRequest request, HttpServletResponse response,
                                          Object handler, Throwable exception) {
-
-                camelContext.getComponent("servlet");
-
                 String uri = request.getServletPath();
                 if (uri == null || uri.isEmpty()) {
                     uri = request.getPathInfo();
diff --git a/components-starter/camel-micrometer-starter/src/main/java/org/apache/camel/component/micrometer/springboot/metrics/CamelMetricsConfiguration.java b/components-starter/camel-micrometer-starter/src/main/java/org/apache/camel/component/micrometer/springboot/metrics/CamelMetricsConfiguration.java
index ed048170b3d..154a721618e 100644
--- a/components-starter/camel-micrometer-starter/src/main/java/org/apache/camel/component/micrometer/springboot/metrics/CamelMetricsConfiguration.java
+++ b/components-starter/camel-micrometer-starter/src/main/java/org/apache/camel/component/micrometer/springboot/metrics/CamelMetricsConfiguration.java
@@ -22,14 +22,11 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
 public class CamelMetricsConfiguration {
 
     /**
-     * Whether HTTP uri tags should be expanded or not. For example a REST service defined with
-     * base URL: /users/{id} will capture metrics with uri tag: /users/{id}.
-     *
-     * There can be some use-cases where you want to expand the URI tag to include the actual requested value instead,
-     * so the uri tag will be something like: /users/123
-     * However this can lead to many tags as the URI is dynamic, so use this with care.
+     * Whether HTTP uri tags should be enabled or not. For example a REST service defined with
+     * base URL: /users/{id} will capture metrics with uri tag with actual dynamic value such as: /users/123.
+     * However, this can lead to many tags as the URI is dynamic, so use this with care.
      */
-    private boolean uriTagExpandValues;
+    private boolean uriTagEnabled;
 
     /**
      * Set whether to enable the MicrometerRoutePolicyFactory for capturing metrics
@@ -58,12 +55,12 @@ public class CamelMetricsConfiguration {
      */
     private boolean enableRouteEventNotifier = true;
 
-    public boolean isUriTagExpandValues() {
-        return uriTagExpandValues;
+    public boolean isUriTagEnabled() {
+        return uriTagEnabled;
     }
 
-    public void setUriTagExpandValues(boolean uriTagExpandValues) {
-        this.uriTagExpandValues = uriTagExpandValues;
+    public void setUriTagEnabled(boolean uriTagEnabled) {
+        this.uriTagEnabled = uriTagEnabled;
     }
 
     public boolean isEnableRoutePolicy() {
diff --git a/components-starter/camel-oaipmh-starter/pom.xml b/components-starter/camel-oaipmh-starter/pom.xml
index 80420283511..e28f2d00304 100644
--- a/components-starter/camel-oaipmh-starter/pom.xml
+++ b/components-starter/camel-oaipmh-starter/pom.xml
@@ -38,14 +38,6 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-oaipmh</artifactId>
       <version>${camel-version}</version>
-      <!--START OF GENERATED CODE-->
-      <exclusions>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-      </exclusions>
-      <!--END OF GENERATED CODE-->
     </dependency>
     <!--START OF GENERATED CODE-->
     <dependency>
diff --git a/components-starter/camel-sap-netweaver-starter/pom.xml b/components-starter/camel-sap-netweaver-starter/pom.xml
index 4842dc37407..a43edc91710 100644
--- a/components-starter/camel-sap-netweaver-starter/pom.xml
+++ b/components-starter/camel-sap-netweaver-starter/pom.xml
@@ -38,14 +38,6 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-sap-netweaver</artifactId>
       <version>${camel-version}</version>
-      <!--START OF GENERATED CODE-->
-      <exclusions>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-      </exclusions>
-      <!--END OF GENERATED CODE-->
     </dependency>
     <!--START OF GENERATED CODE-->
     <dependency>
diff --git a/components-starter/camel-weather-starter/pom.xml b/components-starter/camel-weather-starter/pom.xml
index d51e6aeefaa..705134e1d1f 100644
--- a/components-starter/camel-weather-starter/pom.xml
+++ b/components-starter/camel-weather-starter/pom.xml
@@ -38,14 +38,6 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-weather</artifactId>
       <version>${camel-version}</version>
-      <!--START OF GENERATED CODE-->
-      <exclusions>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-      </exclusions>
-      <!--END OF GENERATED CODE-->
     </dependency>
     <!--START OF GENERATED CODE-->
     <dependency>
diff --git a/components-starter/camel-workday-starter/pom.xml b/components-starter/camel-workday-starter/pom.xml
index 808addc53d4..fe99fc04a0e 100644
--- a/components-starter/camel-workday-starter/pom.xml
+++ b/components-starter/camel-workday-starter/pom.xml
@@ -38,14 +38,6 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-workday</artifactId>
       <version>${camel-version}</version>
-      <!--START OF GENERATED CODE-->
-      <exclusions>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-      </exclusions>
-      <!--END OF GENERATED CODE-->
     </dependency>
     <!--START OF GENERATED CODE-->
     <dependency>