FAQ

This page answers some frequently asked questions about Hawtio.

General

What is the Hawtio license?

Hawtio uses the Apache 2.0 License.

What does Hawtio do?

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.

How do I install Hawtio?

Which Java version is required?

How do I configure Hawtio?

Mostly Hawtio just works. However, please check out Configuration to see what kinds of things you can configure via system properties.

How do I disable security?

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.

How do I enable Hawtio inside my Java Application / Quarkus / Spring Boot / microservice?

The easiest thing to do is add Jolokia as a Java agent via java command line with -javaagent:

$ java -javaagent:jolokia-agent-jvm-2.0.2-javaagent.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).

How do I connect to my remote JVM?

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.

After trying the above, if you still have problems connecting to your JVM, please get in touch with the community or raise an issue.

How do I install a plugin?

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.

Why does Hawtio log a bunch of 404s to the JavaScript console at startup?

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.

Camel plugin

Why isn’t the Camel plugin visible?

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.

Why doesn’t the Debug tab appear for my Camel route?

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

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:

application.properties
quarkus.camel.debug.enabled = true

Camel K

Camel K uses Camel Quarkus under the hood, so you need to configure the Integration to enable debug mode during build time. You can do it using the CLI:

$ kamel run Integration.java --build-property=quarkus.camel.debug.enabled=true

Or in the Integration CR using the builder trait:

spec:
...
  traits:
    builder:
      configuration:
        properties:
        - quarkus.camel.debug.enabled = true
...

Why doesn’t the Trace tab appear for my Camel route?

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:

application.properties
camel.main.tracing = true
camel.main.backlogTracing = true
camel.main.useBreadcrumb = true

For Spring Boot, it would look like the following:

application.properties
camel.springboot.tracing = true
camel.springboot.backlog-tracing = true
camel.springboot.use-breadcrumb = true

See Camel User manual - Tracer for more information.