This page answers some frequently asked questions about Hawtio.
Hawtio uses the Apache 2.0 License.
It’s a pluggable management console for Java stuff which supports any kind of JVM, any kind of runtimes (Quarkus, Spring Boot, etc.) and container (Tomcat, Jetty, WildFly, Karaf, etc.), and any kind of Java technology and middleware.
See Supported Versions.
Mostly Hawtio just works. However, please check out Configuration to see what kinds of things you can configure via system properties.
Hawtio has security enabled by default using the underlying application container’s security mechanism. Have a look at Security to learn how to disable security.
The easiest thing to do is add Jolokia as a Java agent via
java command line with
$ java -javaagent:jolokia-agent.jar=host=0.0.0.0 -jar foo.jar
Then by default you can connect on http://localhost:8778/jolokia to access the Jolokia API endpoint.
Now you can use the standalone Hawtio application to connect to it. This strategy minimises the effect of Hawtio/Jolokia on your app (e.g. you don’t need to mess about with what’s inside your application or even change the classpath).
All that’s required for Hawtio to connect to any remote JVM is that a Jolokia agent is attached to the JVM you wish to connect to. There are a few different agents you can use:
So once you’ve got a Jolokia agent in your JVM you can test it by accessing
http://host:port/jolokia in a browser to see if you can view the JSON returned for the version information of the Jolokia agent.
Assuming you have Jolokia working in your JVM, then you can use the Remote tab on the Connect plugin in Hawtio to connect.
By default, only
localhost is accepted to connect for security, so you need to configure the
hawtio.proxyAllowlist system property to explicitly allow hosts that you are connecting to. See Configuration properties for more information on the property.
Each Hawtio distro has these browser-based plugins inside already. Additionally, Hawtio can discover any other external plugins deployed in the same JVM.
The Hawtio UI updates itself in real time based on what it can find in the server side JVM it connects to. So, for example, if you connect to an empty Tomcat/Jetty you’ll just see things like JMX and Runtime.
Then if you deploy a WAR which has, for instance, Apache Camel routes inside it, you should see Camel plugin appear as you’ve deployed code which registers MBeans for Apache Camel.
So usually, if you are interested in a particular plugin and it’s not visible in the Hawtio UI, usually you just need to deploy or add a server side plugin; which is usually a case of deploying some Java code (e.g. Apache Camel, Apache ActiveMQ Artemis, Spring Boot, etc.).
Note some plugins, such as Logs plugin and Connect plugin’s Discover tab, require the presence of a supporting server side MBean provided by a specific Hawtio dependency jar. See Plugins table for the additional information on each plugin’s requirement.
If you want to develop a custom plugin, refer to Plugins - Custom plugins.
Hawtio queries presence of some static resources and availability of endpoints on the server to decide which features should be enabled or disabled at startup time. The Connect plugin also periodically probes registered Jolokia connections for checking their availabilities. In most cases, 404s just mean they are not available by configuration or temporarily.
The Camel plugin currently requires that the Camel MBeans are stored using the default domain name which is
org.apache.camel. So if you configure Camel to use a different name, using the
mbeanObjectDomainName configuration, then the Camel plugin will not work. See details reported in ticket #1712.
The Debug tab depends on the JMX MBeans provided by the Camel application you run. Camel debugging is enabled by the Camel Debug component. Installing the component is the requirement for the Debug tab in Hawtio.
Camel Quarkus 3.x
Camel Quarkus by default only enables the debug extension in development mode. If you want to enable debugging with a packaged Quarkus application, you need an extra configuration properties as follows:
quarkus.camel.debug.enabled = true
See Camel Quarkus Reference - Debug - Additional Camel Quarkus configuration for more information.
The Trace tab depends on the JMX MBeans provided by the Camel application you run. You need to set up specific configuration properties to enable tracing on the Camel side.
For Quarkus, it would look like the following:
camel.main.tracing = true
camel.main.backlogTracing = true
camel.main.useBreadcrumb = true
For Spring Boot, it would look like the following:
camel.springboot.tracing = true
camel.springboot.backlog-tracing = true
camel.springboot.use-breadcrumb = true
See Camel User manual - Tracer for more information.