diff --git a/camel-springboot/README.md b/camel-springboot/README.md
index 36663e2..2433757 100644
--- a/camel-springboot/README.md
+++ b/camel-springboot/README.md
@@ -2,49 +2,116 @@
This sample application shows how to make it hawtio-enabled with Camel Spring Boot. Once deployed on OpenShift/Kubernetes, it will be discovered by Hawtio Online.
-## How to run
+## Highlights
-Run with:
+- [pom.xml](pom.xml)
- mvn spring-boot:run
+This project uses JKube [kubernetes-maven-plugin](https://eclipse.dev/jkube/docs/kubernetes-maven-plugin/) to build a container image and deploy it to a Kubernetes/OpenShift cluster. JKube supports Jolokia out of the box and the default base image already includes Jolokia agent.
-Hawtio is exposed at the [Actuator](https://docs.spring.io/spring-boot/docs/latest/reference/html/production-ready-endpoints.html) management port configured using
-`management.server.port` in `application.properties`. Browse Hawtio via the following URL: http://localhost:10001/actuator/hawtio/index.html
+All you need to make the application _hawtio-enabled_ is to define additional environment variables to the deployment resource to fine-tune the Jolokia agent options. By default, JKube plugin sets up a Jolokia agent with HTTPS and SSL client authentication enabled. The only necessary configurations are the client principal that matches the Hawtio Online instance (the default is `hawtio-online.hawtio.svc`) and the CA cert to specify `service-ca.crt` instead of the default `ca.crt`.
-The actual application is running on port 10000 (`server.port` in `application.properties`).
+```xml
+
+
+
+ cn=hawtio-online.hawtio.svc
+ caCert=/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt
+
+
+
+```
-## Alternative configurations
+## How to run locally
-### Alternative management endpoint base paths
-If your preference is to avoid running Hawtio under the `/actuator` path, you can set the `management.endpoints.web.base-path` property in `application.properties`:
+Run with:
-```
-management.endpoints.web.base-path=/
+```console
+mvn spring-boot:run
```
-Hawtio will then be available at http://localhost:10001/hawtio/index.html.
+## How to deploy it to Kubernetes/OpenShift
-### Alternative hawtio endpoint paths
+This example is intended to be used by deploying to a Kubernetes/OpenShift cluster.
-You can also customize the endpoint path of the Hawtio actuator endpoint by setting the `management.endpoints.web.path-mapping.hawtio` property in `application.properties`:
+To deploy it to a cluster, firstly change the container image name in [pom.xml](pom.xml) to fit your development environment. (The default image name is `quay.io/hawtio/hawtio-online-example-camel-springboot:latest`, which should be pushed to the `hawtio` organisation on [Quay.io](https://quay.io/).)
-```
-management.endpoints.web.path-mapping.hawtio=hawtio/console
+```xml
+ quay.io/hawtio/%a:latest
```
-### Alternative ports & context paths
-Alternative ports and context path configurations can be tested by changing the following properties in `application.properties`:
+Then build the project and container image:
+```console
+mvn package k8s:build
```
-server.port=10000
-server.servlet.context-path=/sample-app
-management.port=10000
-management.server.servlet.context-path=/management
+
+and push the image to the container registry so that Kubernetes/OpenShift can pull it at deployment:
+
+```console
+mvn k8s:push
```
-Using the above configuration, the server will use port 10000 and the custom context path `sample-app`.
-The Actuator management endpoints and Hawtio will also run on port 10000 using the custom management context path `management`.
-The URLs for accessing the application and Hawtio are as follows:
+To deploy it to Kubernetes/OpenShift:
-- Application: http://localhost:10000/sample-app/
-- Hawtio: http://localhost:10000/sample-app/management/actuator/hawtio
+```console
+mvn k8s:resource k8s:deploy
+```
+
+After deployment is successful and the pod has started, the application log can be seen on the cluster like this:
+
+```console
+$ hawtio-online-example-camel-springboot
++ hawtio-online-example-camel-springboot-7f578548d6-s27j4 › spring-boot
+Starting the Java application using /opt/jboss/container/java/run/run-java.sh ...
+INFO exec java -javaagent:/usr/share/java/jolokia-jvm-agent/jolokia-jvm.jar=config=/opt/jboss/container/jolokia/etc/jolokia.properties -javaagent:/usr/share/java/prometheus-jmx-exporter/jmx_prometheus_javaagent.jar=9779:/opt/jboss/container/prometheus/etc/jmx-exporter-config.yaml -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:+ExitOnOutOfMemoryError -cp ".:/deployments/*" org.springframework.boot.loader.JarLauncher
+ _________________________________________
+< Hawtio Online Camel Spring Boot Example >
+ -----------------------------------------
+ \ ^__^
+ \ (oo)\_______
+ (__)\ )\/\
+ ||----w |
+ || ||
+
+I> No access restrictor found, access to any MBean is allowed
+Jolokia: Agent started with URL https://172.17.11.234:8778/jolokia/
+2023-11-23T03:51:12.505Z INFO 1 --- [ main] i.h.o.e.s.SampleSpringBootService : Starting SampleSpringBootService using Java 17.0.9 with PID 1 (/deployments/BOOT-INF/classes started by jboss in /deployments)
+2023-11-23T03:51:12.512Z INFO 1 --- [ main] i.h.o.e.s.SampleSpringBootService : No active profile set, falling back to 1 default profile: "default"
+2023-11-23T03:51:15.938Z INFO 1 --- [ main] o.a.c.i.e.DefaultCamelContextExtension : Detected: camel-debug JAR (Enabling Camel Debugging)
+2023-11-23T03:51:17.021Z INFO 1 --- [ main] org.xnio : XNIO version 3.8.8.Final
+2023-11-23T03:51:17.037Z INFO 1 --- [ main] org.xnio.nio : XNIO NIO Implementation Version 3.8.8.Final
+2023-11-23T03:51:17.077Z INFO 1 --- [ main] org.jboss.threads : JBoss Threads version 3.5.0.Final
+2023-11-23T03:51:17.502Z INFO 1 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Apache Camel 4.1.0 (SampleCamelSpringBoot) is starting
+2023-11-23T03:51:17.582Z INFO 1 --- [ main] o.a.c.component.quartz.QuartzComponent : Setting org.quartz.scheduler.jmx.export=true to ensure QuartzScheduler(s) will be enlisted in JMX
+2023-11-23T03:51:17.617Z INFO 1 --- [ main] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor
+2023-11-23T03:51:17.621Z INFO 1 --- [ main] org.quartz.simpl.SimpleThreadPool : Job execution threads will use class loader of thread: main
+2023-11-23T03:51:17.632Z INFO 1 --- [ main] org.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
+2023-11-23T03:51:17.633Z INFO 1 --- [ main] org.quartz.core.QuartzScheduler : Quartz Scheduler v.2.3.2 created.
+2023-11-23T03:51:17.633Z INFO 1 --- [ main] org.quartz.simpl.RAMJobStore : RAMJobStore initialized.
+2023-11-23T03:51:17.638Z INFO 1 --- [ main] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.3.2) 'DefaultQuartzScheduler-SampleCamelSpringBoot' with instanceId 'NON_CLUSTERED'
+ Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
+ NOT STARTED.
+ Currently in standby mode.
+ Number of jobs executed: 0
+ Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
+ Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
+
+2023-11-23T03:51:17.638Z INFO 1 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'DefaultQuartzScheduler-SampleCamelSpringBoot' initialized from an externally provided properties instance.
+2023-11-23T03:51:17.638Z INFO 1 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.3.2
+2023-11-23T03:51:17.651Z INFO 1 --- [ main] o.a.c.component.quartz.QuartzEndpoint : Job Camel_SampleCamelSpringBoot.cron (cron=0/10 * * * * ?, triggerType=CronTriggerImpl, jobClass=CamelJob) is scheduled. Next fire date is 2023-11-23T03:51:20.000+0000
+2023-11-23T03:51:17.688Z INFO 1 --- [ main] o.a.c.component.quartz.QuartzEndpoint : Job Camel_SampleCamelSpringBoot.simple (cron=null, triggerType=SimpleTriggerImpl, jobClass=CamelJob) is scheduled. Next fire date is 2023-11-23T03:51:17.685+0000
+2023-11-23T03:51:17.733Z INFO 1 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Routes startup (started:2)
+2023-11-23T03:51:17.733Z INFO 1 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started cron (quartz://cron)
+2023-11-23T03:51:17.733Z INFO 1 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Started simple (quartz://simple)
+2023-11-23T03:51:17.733Z INFO 1 --- [ main] o.a.c.impl.engine.AbstractCamelContext : Apache Camel 4.1.0 (SampleCamelSpringBoot) started in 230ms (build:0ms init:0ms start:230ms)
+2023-11-23T03:51:17.735Z INFO 1 --- [ main] o.a.camel.impl.debugger.BacklogDebugger : Enabling Camel debugger
+2023-11-23T03:51:17.735Z INFO 1 --- [ main] o.a.c.component.quartz.QuartzComponent : Starting Quartz scheduler: org.quartz.impl.StdScheduler@72b53f27
+2023-11-23T03:51:17.740Z INFO 1 --- [ main] org.quartz.core.QuartzScheduler : Scheduler DefaultQuartzScheduler-SampleCamelSpringBoot_$_NON_CLUSTERED started.
+2023-11-23T03:51:17.744Z INFO 1 --- [ main] i.h.o.e.s.SampleSpringBootService : Started SampleSpringBootService in 6.646 seconds (process running for 7.617)
+Hello Camel! - simple
+2023-11-23T03:51:17.788Z INFO 1 --- [melJMXConnector] o.a.c.c.debug.JmxConnectorService : JMX Connector thread started and listening at: service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi/camel
+Hello Camel! - cron
+Hello Camel! - simple
+Hello Camel! - cron
+Hello Camel! - simple
+```
diff --git a/camel-springboot/jmx-exporter.yml b/camel-springboot/jmx-exporter.yml
deleted file mode 100644
index 02df234..0000000
--- a/camel-springboot/jmx-exporter.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-startDelaySecs: 5
-ssl: false
-lowercaseOutputName: true
-lowercaseOutputLabelNames: true
-blacklistObjectNames: ["java.lang:*"]
-attrNameSnakeCase: true
diff --git a/camel-springboot/pom.xml b/camel-springboot/pom.xml
index f9c30f7..6cd5d19 100644
--- a/camel-springboot/pom.xml
+++ b/camel-springboot/pom.xml
@@ -12,6 +12,12 @@
Hawtio Online Camel Spring Boot Example
Hawtio Online :: Sample Camel Spring Boot 3.x application
+
+ quay.io/hawtio/%a:latest
+
+ jib
+
+
@@ -105,12 +111,6 @@
org.springframework.boot
spring-boot-maven-plugin
${spring-boot-version}
-
- io.hawt.online.example.springboot.SampleSpringBootService
-
- -javaagent:./target/dependency/jmx_prometheus_javaagent.jar=10002:./jmx-exporter.yml
-
-
@@ -119,30 +119,24 @@
-
-
- org.apache.maven.plugins
- maven-dependency-plugin
-
-
- copy
- compile
-
- copy
-
-
-
+ org.eclipse.jkube
+ kubernetes-maven-plugin
+ ${kubernetes-maven-plugin-version}
-
-
- io.prometheus.jmx
- jmx_prometheus_javaagent
- ${prometheus-jmx-exporter-version}
- jar
- jmx_prometheus_javaagent.jar
-
-
+
+
+
+ cn=hawtio-online.hawtio.svc
+ caCert=/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt
+
+
diff --git a/pom.xml b/pom.xml
index 1b58ecc..95650ce 100644
--- a/pom.xml
+++ b/pom.xml
@@ -32,13 +32,11 @@
2.0.0-M4
0.20.0
+ 1.15.0
3.1.0
3.0.0
3.11.0
- 3.6.1
3.2.2
- 3.0.1
- 2.6
3.2.2
@@ -51,7 +49,6 @@
- org.apache.maven.plugins
maven-antrun-plugin
${maven-antrun-plugin-version}
@@ -63,37 +60,14 @@
maven-compiler-plugin
${maven-compiler-plugin-version}
-
- maven-dependency-plugin
- ${maven-dependency-plugin-version}
-
maven-failsafe-plugin
${maven-failsafe-plugin-version}
-
- maven-release-plugin
- ${maven-release-plugin-version}
-
maven-surefire-plugin
${maven-surefire-plugin-version}
-
- com.github.eirslett
- frontend-maven-plugin
- ${frontend-maven-plugin-version}
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
- ${build-helper-maven-plugin-version}
-
-
- io.fabric8
- docker-maven-plugin
- ${docker-plugin-version}
-