How It Works

How It Works

The QuartzDesk platform consists of the following three downloadable components:

  • QuartzDesk Web Application (quartzdesk-web-x.y.z.war)
  • QuartzDesk JVM Agent (quartzdesk-agent-x.y.z.jar)
  • QuartzDesk Public API Library (quartzdesk-api-x.y.z.jar)


QuartzDesk Web Application

This is the main component whose installation is required for all QuartzDesk editions. The QuartzDesk Web Application is a standard Java web-application distributed as a WAR file that can be deployed to any light-weight Java servlet container (Tomcat, Jetty, etc.) or any full-fledged Java application server (IBM WebSphere, RedHat JBoss, etc.). For the complete list of all currently supported servlet containers and application servers, please refer to our Supported Platforms list. The QuartzDesk Web Application provides the Graphical User Interface (GUI) for the QuartzDesk platform. Using this GUI, users can connect via one of the supported JMX protocols to remote Quartz scheduler instances and perform all management and monitoring operations.

The QuartzDesk Web Application exposes multiple JAX-WS SOAP endpoints of web-services through which you can access most of the functionality that is available in the GUI.

The installation of the QuartzDesk Web Application component is described in the QuartzDesk Web-Application Installation and Upgrade Guide.


QuartzDesk JVM Agent

This component is required for the QuartzDesk Standard and Enterprise editions only. The QuartzDesk JVM Agent component works as a specialized JVM plugin that provides the following functionality:

  • Discovery of all Quartz scheduler instances running on the JVM.
  • Automatic registration of job listeners for all discovered Quartz scheduler instances.
  • On-the-fly instrumentation of the Quartz scheduler API's Java bytecode in order to add new methods to the Quartz scheduler MBean API. These injected methods are invoked by the QuartzDesk Web Application and they expose functionality that is not available in the standard Quartz scheduler MBean API. For example, the agent injects methods to access extended, trigger-type specific attributes and methods to create and update triggers. Another example where the instrumentation comes in handy is working around / fixing JMX related bugs in application servers.
  • Registration of agent specific MBeans to access job and trigger execution history, statistics, execution notification rules etc.
  • Execution notification rules framework for near-real-time job and trigger monitoring.
  • Job chaining engine for job orchestration purposes.
  • Accessing messages enqueued by execution notification rules.
  • Recording the job & trigger execution history including the interception of job execution log messages.
  • Providing near-real-time access to the intercepted log messages produced by the currently executing job. These messages can be viewed in the Currently Executing Jobs tab in the QuartzDesk GUI for all currently executing jobs.
  • Full-text indexes and search features for jobs, triggers, execution history records, notification rules, job chains etc.
  • Optional JMXMP and JMX/RMI connectors for the JVM's platform MBean server.
  • etc.


The installation of QuartzDesk JVM Agent is described in the QuartzDesk JVM Agent Installation and Upgrade Guide.


QuartzDesk Public API Library

This component is required for the QuartzDesk Standard and Enterprise editions only. The QuartzDesk Public API Library works primarily as an interface between managed Quartz scheduler instances and the QuartzDesk JVM Agent. The library contains:

  • Quartz job listeners for all supported Quartz scheduler versions.
  • Specialized logging Appenders and Handlers for all popular Java logging frameworks (log4j, log4j2, logback, jul). These Appenders and Handlers can be configured to intercept log messages produced by executed jobs. These messages are persisted in the execution history and can be viewed in the QuartzDesk GUI. They can be parsed and analyzed by custom (JavaScript-coded) execution notification rules.
  • SOAP client APIs for all JAX-WS web-services exposed by the QuartzDesk web application.

The QuartzDesk Public API Library is distributed as a single JAR file and Quartz scheduler enabled applications only need to include this library on their runtime classpath. For web applications this typically involves copying the library to the web application's WEB-INF\lib folder. There are no other installation steps required to use this library, just drop it on the classpath and that is it.

Please note that the QuartzDesk Public API Library is available in the Maven Central repository so that developers can easily add it as a runtime dependency in their Maven-based projects.




The following figures describe deployment scenarios and roles of individual QuartzDesk platform components. The first figure depicts the deployment scenario for the QuartzDesk Standard and Enterprise edition and it refers to all three QuartzDesk platform components (QuartzDesk Web Application, QuartzDesk JVM Agent and QuartzDesk Public API Library). The second figure depicts the simplistic deployment model for the QuartzDesk Lite edition and it only refers to the QuartzDesk Web Application component because the other two components are not used and supported for this feature-restricted edition.

At the bottom of both deployment scenarios you can see a JVM powering a Java servlet container / application server with deployed a QuartzDesk Web Application component. The QuartzDesk Web Application connects via JMX to two remote JVMs. The first JVM on the left is a JVM that powers a Java servlet container / application server with two deployed Quartz scheduler enabled applications. On the right, there is a JVM powering a standalone Quartz scheduler enabled application.


Standard & Enterprise Edition

QuartzDesk Standard / Enterprise edition deployment.


The two QuartzDesk JVM Agents in the above figure use dedicated quartzdesk_agent databases. Please note that this is not strictly required and it is usually preferable to use a shared quartzdesk_agent database for multiple QuartzDesk JVM Agents. Such a shared setup does not cause any data collisions provided that individual Quartz schedulers use unique MBean object names.

The decision on whether to use a shared quartzdesk_agent database, or multiple dedicated, or partially shared databases depends on the number of active jobs and triggers running on individual JVMs, the job execution frequency and other factors. As a general rule of thumb, a single quartzdesk_agent database can easily handle hundreds of active jobs and triggers and hundreds of job executions per day. There are no hard rules and if you are unsure about the sizing, please contact us to discuss your details.


Lite Edition

 QuartzDesk Lite edition deployment.