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 (supports both GET and POST; POST accepts a JSON body) -
/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.
jwtIssuer
and/or
jwtAudience
must be set so that the
iss
and
aud
claims are
validated as well. Without them a token is accepted on the strength of its signature
and expiry alone, which means any unexpired token signed by a key the keystore trusts
is accepted no matter which issuer minted it or which audience it was intended for.
The server therefore fails to start when a JWT keystore is configured but neither
value is set.
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.
If a deployment genuinely wants signature and expiry validation only, set
camel.server.jwtAllowMissingIssuerAndAudience=true
to allow the server to start
without an issuer or an audience.
The same options are available on the management server as
camel.management.jwtIssuer
,
camel.management.jwtAudience
and
camel.management.jwtAllowMissingIssuerAndAudience
.