Platform Http Main

Since Camel 4.0

The camel-platform-http-main is an embedded HTTP server for camel-main standalone applications.

The embedded HTTP server is using VertX from the camel-platform-http-vertx dependency.

Enabling

The HTTP server for camel-main is disabled by default, and you need to explicitly enable this by setting camel.server.enabled=true in application.properties.

Auto-detection from classpath

To use this implementation all you need to do is to add the camel-platform-http-main dependency to the classpath. Then, the platform http component should auto-detect this.

Uploading and downloading files

The embedded HTTP server comes with a set of features out of the box (management, development and user services), that can be enabled.

These features are as follows:

  • / - Serving static content such as html, javascript, css, and images to make it easy to embed very small web applications.

  • /observe/info - Report basic information about Camel

  • /observe/health - Health checks

  • /observe/jolokia - To use Jolokia to expose JMX over HTTP REST

  • /observe/metrics - To provide OTEL metrics in prometheus format

  • /q/dev - Developer console that provides a lot of statistics and information

  • /q/upload - Uploading source files, to allow hot reloading.

  • /q/download - Downloading source files, to allow inspecting

  • /q/send - Sending messages to the Camel application via HTTP

You configure these features in the application.properties file using the camel.server.xxx and camel.management.xxx options.

JWT authentication

The embedded HTTP server can validate JWT bearer tokens on incoming requests. Token signatures are verified against a keystore, and the exp and nbf claims are checked by default. Set jwtIssuer and/or jwtAudience to also validate the iss and aud claims.

camel.server.enabled=true
camel.server.authenticationEnabled=true
camel.server.authenticationPath=/*

camel.server.jwtKeystoreType=jks
camel.server.jwtKeystorePath=keystore.jks
camel.server.jwtKeystorePassword=changeme

camel.server.jwtIssuer=https://issuer.example.com
camel.server.jwtAudience=api,internal-api

jwtAudience accepts a comma-separated list of values. A token is accepted if its aud claim contains any of the configured values.