Jetty/Howto/Run Jetty with JConsole
Contents
Introduction
JConsole is a graphical tool; it allows you to remotely manage and monitor your server and web application status using JMX. When following the instructions given below, please also ensure that you make any necessary changes to any anti-virus software you may be using which may prevent jconsole from running.
Monitoring Jetty with JConsole
To monitor Jetty's server status with JConsole, make sure JConsole is running, and start Jetty with a special system property.
Starting Jetty Standalone
This is straightforward from the command line, when running the standalone Jetty binary.
java -Dcom.sun.management.jmxremote -jar start.jar etc/jetty-jmx.xml jconsole & # runs jconsole in the background
You might also want to consult the section on configuring the start.ini file to clean up the command line, and apply these options to all subsequent jetty invocations.
Starting the Jetty Maven Plugin
If you are running the Jetty Maven Plugin, you must set the system property com.sun.management.jmxremote on Maven before running the plugin. The way to do this is to set your MAVEN_OPTS environment variable (if you're not sure how to do this, consult the Maven documentation).
Here is an example that sets the system property on the fly in a BASH shell, before starting Jetty via the plugin:
export MAVEN_OPTS=-Dcom.sun.management.jmxremote mvn jetty:run jconsole & # runs jconsole in the background
Connecting to your server process
When you start Jetty, you see a dialog box from JConsole with a list of running processes to which you can connect. It should look something like so:
Select the start.jar entry and click the "Connect" button. A new JConsole window opens:
From this window you can monitor memory usage, thread usage, classloading and VM statistics. You can also perform operations such as a manual garbage collect. JConsole is an extremely powerful and useful tool.
provided
Managing Jetty Objects with JConsole
The MBean tab of JConsole allows access to managed objects within the Java application, including MBeans the JVM provides. If you also want to interact with the Jetty JMX implementation via JConsole, you need to start Jetty JMX in a form that JConsole can access.
Starting Jetty Standalone
Starting the Jetty server is straightforward, but requires two additional arguments:
- The OPTIONS=default,jmx start option to load the JMX-related JARs.
- The etc/jetty-jmx.xml configuration, to configure the JVM JMX Server.
java -Dcom.sun.management.jmxremote -jar start.jar OPTIONS=default,jmx etc/jetty-jmx.xml etc/jetty.xml [more config files] jconsole &
Starting the Jetty Maven Plugin
The easiest way to start the Jetty Maven Plugin is to supply the etc/jetty-jmx.xml file in the plugin configuration:
<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <configuration> ... <jettyConfig>/path/to/jetty-jmx.xml</jettyConfig> ... </configuration> </plugin>
Then, just as above, start JConsole and Jetty:
export MAVEN_OPTS=-Dcom.sun.management.jmxremote mvn jetty:run jconsole & # runs jconsole in the background