FAQs

Frequently Asked Questions - All FAQs

Please select your question category

Search FAQs

General questions about the product.

We launched QuartzDesk for public in May 2013. The development started about 2 years prior to the launch date.

Yes, there is. To access the online demo you need to do is fill in this form. After you submit the form, you will receive online demo access and usage instructions and you can have a play.

The online demo showcases the QuartzDesk Enterprise edition.

We provide three editions - one free edition (Lite) and two paid editions (Standard and Enterprise). For their differences, please refer to the editions comparison page.

No. QuartzDesk can only be used to manage and monitor Java Quartz schedulers.

At this time, we do not have any plans to add support for Quartz.NET. If you are interested in using QuartzDesk with Quartz.NET schedulers, please let us know. If we see enough demand, we may reconsider and implement support for Quartz.NET. 

QuartzDesk supports all Quartz scheduler versions greater or equal to 1.8.6.

QuartzDesk is a Quartz scheduler management and monitoring system that relies on an external Quartz scheduler to provide all scheduling-related functionality. Therefore you cannot replace Unix/Linux cron nor any other scheduling system with QuartzDesk itself.

However, we have recently developed QuartzDesk Executor application that can be used to replace your existing scheduling system and make use of all the advanced features provided by the QuartzDesk platform such as persistent execution history, notification rules, visual statistics, job chaining etc.

QuartzDesk Executor is a small Java web application that uses Quartz scheduler and it can be currently used to schedule and run local and remote executable files and scripts  (e.g. *.bat, *.cmd, *.sh, *.exe, ...).

QuartzDesk Executor application is available free of charge including all source code. We encourage people to fork, extend and modify the application to suit their needs.

In our backend systems we have been using QuartzDesk Executor to schedule and run various Java native jobs and shell scripts that were previously scheduled using cron. There are at least a dozen of our customers who have been using QuartzDesk Executor for similar purposes.

If you are interested, please contact us and we will send you download links and installation and usage instructions.

QuartzDesk platform runs on all modern Java application servers and databases. For a complete list of all supported platforms and details, please refer to our Supported Platforms list.

It depends. We aim to release a new version every 30 days or sooner and we typically have one bigger release every 6 months. You can check our release history to see the actual release frequency etc.

Yes, we do. If you follow us on social networks (Facebook, Google+, Twitter), then you will receive all important product related news, including notifications on new releases, bug fixes, etc.

The social traffic that we generate is fairly low so you do not have to be worried about ours posts filling up your news feed.

US ECCN: 5D992.

EU ECCN: QuartzDesk is not subject to Wassenaar dual-use Control List and as such it does not have / need the EU ECCN.

Questions about licensing and payment methods.

We currently accept the following payment methods:

Debit or Credit Cards: To pay with your credit or debit card, please choose the PayPal payment method in our eshop. We use PayPal to process all bank card transactions.

Please note that you do not have to have a PayPal account to pay with your debit or credit card through PayPal. After you have been redirected to PayPal, select the Pay with a debit or credit card option, fill in your bank card details and click Pay. You can refer to the picture below.

PayPal Payment With Credit or Debit Card

PayPal Balance: If you have a PayPal account, you can use this option to pay quickly and easily. Please choose the PayPal payment method in our online eshop and after being redirected to the PayPal checkout page, select the Pay with my PayPal account option, fill in your PayPal login credentials and log in. You can refer to the picture below.

PayPal - Pay With a Debit or Credit Card

Wire Transfer: You can make a quick and safe bank wire transfer payment any time you need. Upon receiving your order, we will send you a pro-forma invoice with payment details (amount due, our bank account details) for you to realize your payment. Upon receiving your payment, we will send you the final invoice and license keys.

No, we do not. However, we offer 30-day free fully-functional trial licenses for all paid QuartzDesk editions. During the 30-day trial period we will provide you with unlimited technical support.

If you need more time to evaluate our product, please contact our Support at support@quartzdesk.com and request an extension of your trial.

Starting with QuartzDesk release 1.6.0, the QuartzDesk Public API library (quartzdesk-api-x.y.z.jar) source code is freely available and can be redistributed without any restrictions. The source code can be downloaded from the Maven Central repository and it is not available for download on our website.

The QuartzDesk Web Application (quartzdesk-web-x.y.z.war) and QuartzDesk JVM Agent (quartzdesk-agent-x.y.z.jar) source code is available only to selected OEM partners who wish to re-brand and re-distribute QuartzDesk as a part of their own product offering.

If you wish to receive detailed information on our OEM partnership program, please send an inquiry to sales@quartzdesk.com.

We provide three QuartzDesk editions - Lite, Standard and Enterprise. The Lite edition is free and the other two editions are paid.

For details on features available in individual QuartzDesk editions, please refer to our Pricing & Licensing Terms page.

No, you can use the same license key that you use for the QuartzDesk Web Application installation.

We offer discounts programs to the following subject categories. To apply we ask you to fill in and submit an application form with the relevant evidence. 

  • Startups (60% OFF) - Apply
  • Open-Source Projects (FREE) - Apply
  • Academia (upto  80% OFF) - Apply
  • Non-For-Profit Organizations (upto 80% OFF) - Apply

After you submit the application form, we will review the submitted data and inform you whether the discount can be granted and the actual discount percentage applicable to your case.

Besides the above mentioned discounts, we also offer quantity and promotional discounts. Please use our Live Chat or send us a message to find out about the applicable discounts.

Yes, it is perfectly possible. The upgrade process is depicted in the following picture:

Upgrade Standard Edition License to Enterprise Edition License

To upgrade you will need to purchase a new replacement enterprise edition license for a discounted price. The discount is proportional to the length of unused SW Maintenance of your existing standard edition license. Please contact us prior to upgrading so that we can give you a special discount coupon code that you will redeem in our online eshop to receive the replacement enterprise edition license for a discounted price.

The actual formula to calculate the upgrade price is:

Enterprise Edition License Price - ( Standard Edition License Price / 365 ) * Number of Unused SW Maintenance Days of the Standard Edition License

Please note that the SW Maintenance of the replacement enterprise edition license will start on the day on which you purchase the license and will end 12 months after that. Therefore, with the upgrade we automatically extend your original SW Maintenance - see the picture above.

No, it is not possible. You will need to purchase a new standard edition license, e.g. after the SW Maintenance of your current enterprise edition license expires.

Questions about the support we provide.

All non-free QuartzDesk edition licenses come automatically with 12 months of SW Maintenance that includes unlimited technical support and free product upgrades.

Once the SW Maintenance period is over, your software remains fully functional, but you will not be able to upgrade it nor will you be eligible to receive any technical support.

You can renew your SW Maintenance anytime for a highly discounted price. 30 days prior to your your SW Maintenance expiry, we will send an email notification message to the registered email address associated with your license key. For further details, please refer to our Pricing & Licensing Terms page.

SW Maintenance entitles you to download and install all fixes, updates and new product versions and to receive technical support. SW Maintenance is available only for non-free QuartzDesk editions (i.e. the Standard and Enterprise edition).

SW Maintenance has to be renewed every year and amounts to roughly 45% of the license costs.

All new non-free QuartzDesk edition license purchases initially come with 12 months of SW Maintenance. After the SW Maintenance expires, you can decide to keep the currently installed version or to purchase another year of SW Maintenance.

SW Maintenance for your license(s) can be renewed on this page. You will only need to enter serial numbers of licenses whose SW Maintenance you wish to renew and complete three simple steps.

The license serial number uses the XXXX-XXXX-XXXX-XXXX format and it is available in your license.key file - see the value of the serial-number element. Alternatively, the serial number can be obtained from a running QuartzDesk Web Application - see Help > License > Serial Number.

Please note that we will automatically notify you via email three times prior to the SW Maintenance expiry date. The notification message includes a unique link that you can use to renew the SW Maintenance.

Upon completing of the renewal process, you will receive replacement license keys with extended SW Maintenance. You must not use the old (replaced) license keys as they will not allow you to apply product upgrades and we will not provide technical support for installations that use old license keys.

You can renew your SW Maintenance anytime. The new SW Maintenance will start as follows:

(1) If you renew after the expiry of your current SW Maintenance, then your new SW Maintenance will start on the expiry date of your current SW Maintenance and finish 12 months after the expiry date of your current SW Maintenance.

(2) If you renew before the expiry of your current SW Maintenance, then your new SW Maintenance will start on the renewal date and finish 12 months after the expiry date of your current SW Maintenance.

 

We provide limited technical support with the product installation to QuartzDesk Lite (free) edition users.

We provide unlimited technical support to QuartzDesk Standard and Enterprise edition users with active SW Maintenance - see our FAQs for a detailed explanation of what SW Maintenance is.

Technical support is provided on the best-effort basis and there is no guaranteed response / resolution time unless agreed otherwise. We address all submitted support tickets and questions with the highest priority with an average response / resolution time of 1-2 hours during our regular office hours (Mon-Fri 9am-17pm CET).

If you need instant help, you are welcome to use our Live Chat that is available during the above office hours.

No, unless agreed otherwise (e.g. with our OEM partners), we generally do not do that. Instead we prepare a new release based on the latest released version.

Let us say the latest released version is 2.4.1 (major.minor.maintenance). When we fix an issue and/or add some new functionality, we increment either the maintenance version number (2.4.1 -> 2.4.2), or the minor version number (2.4.1 -> 2.5.0) by 1.

The maintenance version number is increased if the new version is backward compatible with the previous release(s) having the same major and minor version numbers.

If the new version breaks the backward compatibility, we increase the minor version number.

For further details, please refer to Versioning & Compatibility page.

Questions about the QuartzDesk JVM Agent component used in the Standard and Enterprise edition.

The version number can be obtained from the QuartzDesk JVM Agent log file.

...
[2014-04-09 10:13:41,912] I [main] [com.quartzdesk.agent.Agent:405] - Initializing JVM Agent: 
com.quartzdesk.agent.Agent@1f3785d3 [QuartzDesk JVM Agent v1.5.0]
...
[2014-04-09 10:13:47,318] I [main] [com.quartzdesk.agent.Agent:277] - Successfully initialized JVM Agent:
com.quartzdesk.agent.Agent@1f3785d3 [QuartzDesk JVM Agent v1.5.0], enabled: true
...

Alternatively, the version number can be be obtained from the QuartzDesk JVM Agent distribution JAR file. Open the JAR file as a ZIP archive (you may need to temporarily rename the JAR file from *.jar to *.zip) and open the META-INF/MANIFEST.MF file.

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.1
Created-By: Apache Maven
Archiver-Version: Plexus Archiver
Built-By: honza
Build-Jdk: 1.6.0_43
Agent-Class: com.quartzdesk.agent.Agent
Build-Date: 2014-03-25
Build-Number: 112
Implementation-Title: quartzdesk-agent
Implementation-Vendor: QuartzDesk.com
Implementation-Vendor-Id: com.quartzdesk
Implementation-Vendor-URL: http://www.quartzdesk.com
Implementation-Version: 1.5.0
Premain-Class: com.quartzdesk.agent.Agent

QuartzDesk supports all Quartz scheduler versions starting with Quartz 1.8.6 up to the latest Quartz 2.2.2.

This exception can occur when the agent attempts to store an execution history record in the quartzdesk_agent DB. It typically happens when the agent tries to store a record with a large (>500KB) job execution log.

To fix this error, you will need to adjust the value of the max_allowed_packet variable in your MySQL server configuration. The max_allowed_packet is measured in bytes and its new value should be large enough to accomodate the largest of your job execution logs produced by your jobs.

To determine the new max_allowed_packet value, you can extract the relevant error messages from your QuartzDesk JVM Agent log files using the following command:

grep "max_allowed_packet" *.log

In the output that contains a list of "Packet for query is too large (xxxx > yyyy)..." errors, search for the line with the biggest xxxx number.  Set the max_allowed_packet variable to a number that is 10-20% bigger than the biggest found xxxx number.

If you are getting the following or similar exception, then you are hitting a bug in the Oracle JDBC driver documented here (requires access to Oracle Metalink site): https://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=BUG&p_id=7112447

[2015-12-21 17:35:14,984] E [QuartzScheduler_Worker-1] [com.quartzdesk.agent.scheduler.common.a:140] - Error processing job execution event: QuartzJobExecutionEvent[...]
com.quartzdesk.agent.api.AgentException: Error creating instance of: class com.quartzdesk.agent.api.domain.model.scheduler.quartz.QuartzExecHistory
...
Caused by: java.lang.ArrayIndexOutOfBoundsException: 35 at oracle.jdbc.driver.OracleSql.computeBasicInfo(OracleSql.java:1005) ~[ojdbc6dms.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at oracle.jdbc.driver.OracleSql.getSqlKind(OracleSql.java:655) ~[ojdbc6dms.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at oracle.jdbc.driver.OraclePreparedStatement.(OraclePreparedStatement.java:1225) ~[ojdbc6dms.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at oracle.jdbc.driver.T4CPreparedStatement.(T4CPreparedStatement.java:30) ~[ojdbc6dms.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at oracle.jdbc.driver.T4CDriverExtension.allocatePreparedStatement(T4CDriverExtension.java:70) ~[ojdbc6dms.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:3906) ~[ojdbc6dms.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:3688) ~[ojdbc6dms.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at oracle.jdbc.driver.PhysicalConnection.prepareStatement(PhysicalConnection.java:9655) ~[ojdbc6dms.jar:Oracle JDBC Driver version - "11.1.0.7.0-Production"] at ext.org.apache.commons.dbcp.DelegatingConnection.prepareStatement(SourceFile:532) ~[quartzdesk-agent-2.3.0.jar:2.3.0] at ext.org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(SourceFile:415) ~[quartzdesk-agent-2.3.0.jar:2.3.0] at com.quartzdesk.agent.scheduler.quartz.a.b.e.a(SourceFile:778) ~[quartzdesk-agent-2.3.0.jar:2.3.0] at com.quartzdesk.agent.scheduler.quartz.b.a(SourceFile:189) ~[quartzdesk-agent-2.3.0.jar:2.3.0] at com.quartzdesk.agent.scheduler.quartz.b.a(SourceFile:52) ~[quartzdesk-agent-2.3.0.jar:2.3.0] at com.quartzdesk.agent.scheduler.common.a.a(SourceFile:446) ~[quartzdesk-agent-2.3.0.jar:2.3.0] ... 8 common frames omitted

To resolve this issue, you must upgrade the Oracle JDBC driver that is used by the agent.

Oracle 11g and 12c JDBC drivers can be downloaded from here: http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html

First you may try increasing the JVM heap memory size by adjusting the value of the -Xmx and/or -XX:MaxPermSize JVM command line arguments.

If the problem remains, you will need to obtain the JVM heap dump from the JVM and analyze it using one of the available Java memory heap analysis tools. We recommend using the free Eclipse Memory Analyzer Tool. Please refer to your JVM documentation for details on how to obtain the JVM heap dump. Most JVMs can be configured to produce the heap dump file automatically whenever the OutOfMemoryError exception occurs.

If you determine the source of the memory leak is the QuartzDesk JVM Agent, please zip up your JVM heap dump file, upload it somewhere (e.g. to DropBox, Google Drive, your corporate FTP server etc.), and submit a support ticket with a link that we can use to download your heap dump file.

Yes, you can, but make sure all of the Quartz schedulers running on all JVMs with agents that use the same (shared) database, have unique object names. QuartzDesk platform uses Quartz scheduler object names as unique Quartz scheduler identifiers.

Unless you explicitly tell the Quartz scheduler what object name to use (using the org.quartz.scheduler.jmx.objectName configuration property), Quartz scheduler uses the object name with the following format:

quartz:type=QuartzScheduler,name=<scheduler_name>,instanceId=<scheduler_instance_id>

Where:

scheduler_name
Name of the Quartz scheduler instance running in your application. This name is typically set using the org.quartz.scheduler.instanceName configuration property.

scheduler_instance_id
Optional instance ID of the Quartz scheduler instance running in your application. The instance ID is either statically assigned (see the org.quartz.scheduler.instanceId configuration property), or it is generated dynamically by the configured Quartz InstanceIdGenerator class (see the org.quartz.scheduler.instanceIdGenerator.class  configuration property).

In the QuartzDesk GUI you can see the Quartz scheduler object name either in the connection registration dialog:

Quartz scheduler object name in the connection registration dialog.

or in the Scheduler Info tab when you open the Quartz scheduler connection:

Viewing the Quartz scheduler object name in the Scheduler Info tab.

Questions about the QuartzDesk Web Application component providing the GUI for all product editions.

Yes. The QuartzDesk Web Application has been designed to run on clusters. Please refer to the Cluster Deployment Notes chapter in the QuartzDesk Installation and Deployment Guide for cluster deployment details.

Please that you only need a single license to deploy the QuartzDesk Web Application to a cluster regardless of the number of cluster members.

The version number is displayed in the upper right-hand corner of a running QuartzDesk Web Application.

The version number is also displayed in the About window (Help -> About) opened from a running QuartzDesk Web Application.

Alternatively, the version number can be be obtained from the QuartzDesk Web Application distribution WAR file. Open the WAR file as a ZIP archive (you may need to temporarily rename the WAR file from *.war to *.zip) and open the META-INF/MANIFEST.MF file.

Manifest-Version: 1.0
Implementation-Title: quartzdesk-web
Implementation-Version: 1.5.0
Class-Path: lib/quartzdesk-api-1.5.0.jar 
...
Built-By: honza
Created-By: Apache Maven
Build-Date: 2014-03-25
Implementation-Vendor: QuartzDesk.com
Implementation-Vendor-URL: http://www.quartzdesk.com
Implementation-Vendor-Id: com.quartzdesk
Build-Jdk: 1.6.0_43
Main-Class: Launcher
Archiver-Version: Plexus Archiver

The installed edition is displayed in the upper right-hand corner of a running QuartzDesk Web Application.

The installed edition is also displayed in the About window (Help -> About) opened from a running QuartzDesk Web Application.

Alternatively, the edition can be obtained from the installed license key file used by the QuartzDesk Web Application. Open the license.key file in the configured QuartzDesk Web application work directory.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:license xmlns:ns2="http://license.quartzdesk.com/v1_0">
    <serial-number>1</serial-number>
    <issue-date>2013-05-28+02:00</issue-date>
    <type>PERPETUAL</type>
    <licensee>
        <name>Test License</name>
    </licensee>
    <issuer>
        <name>CN=QuartzDesk.com CA2, O=QuartzDesk</name>
        <email>sales@quartzdesk.com</email>
        <web>www.quartzdesk.com</web>
        <certificate>-----BEGIN CERTIFICATE-----
MIID9jCCAt6gAwIBAgIBAjANBgkqhkiG9w0BAQUFADAxMRMwEQYDVQQKEwpRdWFy
...
7cwIppIYwyMAmw==
-----END CERTIFICATE-----
</certificate>
    </issuer>
    <products>
        <product id="QuartzDesk">
            <name>QuartzDesk Enterprise Edition</name>
            <edition>Enterprise</edition>
            <version>
                <major>1</major>
            </version>
            <feature-set id="Quartz">
            ...
            </feature-set>
        </product>
    </products>
    <signature>...</signature>
</ns2:license>

The one-step installation mode allows you to get QuartzDesk up and running within a minute by following these steps:

  1. Verify that Java Development Kit (JDK) 1.6, or newer has been installed on your system. 
  2. Create a QuartzDesk work directory anywhere on the local filesystem. You can use any directory name.
  3. Copy the downloaded quartzdesk-web-x.y.z.war file and QuartzDesk license key (license.key) to the created QuartzDesk work directory.
  4. In the QuartzDesk work directory execute the following command:
    On Windows:
    JDK_HOME\bin\java.exe -jar quartzdesk-web-x.y.z.war 

    On Linux/Unix:
    JDK_HOME/bin/java -jar quartzdesk-web-x.y.y.war

    Where JDK_HOME is the path to your JDK installation directory.
  5. Wait for the application to start up and open the displayed application URL in your browser.

QuartzDesk Zero-Installation Mode

In the one-step installation mode QuartzDesk is started using an embedded Jetty servlet container / HTTP server and H2 database. The H2 database is automatically created and initialized in the QuartzDesk work directory upon application startup.

You can tweak the application web context name (default is /quartzdesk) and port number (default is 8080) using the following parameters specified at the end of the command line used to start the application:

ParameterDescriptionExample
--port <number>The HTTP port number used by Jetty. The default is 8080.--port 9090
--context-path <path>The web-application context path used by Jetty. The default is /quartzdesk. --context-path /qd

 

The one-step installation mode is meant to be used solely for experimental and evaluation purposes. We advice against using this mode for any other purpose, e.g. for production deployments.

 

When you see this warning it means the QuartzDesk JVM agent has not been installed on the JVM the Quartz scheduler connection points to.

The QuartzDesk JVM Agent is required by some of the advanced QuartzDesk features. When the JVM agent is not available, these features cannot be used and are disabled in the QuartzDesk GUI.

Steps to fix the problem:

  1. Edit the Quartz scheduler connection to see which JVM and Quartz scheduler instance the connection points to. The target JVM can be identified using the host and port. The Quartz scheduler instance can be identified using the Quartz scheduler object name.
  2. Make sure the QuartzDesk JVM Agent is installed on the target JVM. For installation details, please refer to the QuartzDesk JVM Agent Installation And Upgrade Guide available for download in Installation And Upgrade Guides.
  3. Close the warning dialog and repeat the original action.

When you see this warning it means the version of the installed QuartzDesk Web Application is not compatible with the version of the QuartzDesk JVM Agent installed on the JVM the Quartz scheduler connection points to.

QuartzDesk platform requires the major and minor version numbers of all QuartzDesk components (QuartzDesk Web Application, QuartzDesk JVM Agent, QuartzDesk Public API Library) must match. For details, please refer to the Versioning & Compatibility page.

Steps to fix the problem:

  1. Edit the Quartz scheduler connection to see which JVM and Quartz scheduler instance the connection points to. The target JVM can be identified using the host and port. The Quartz scheduler instance can be identified using the Quartz scheduler object name.
  2. Make sure the correct version of the QuartzDesk JVM Agent version is installed and enabled on the target JVM. For installation details, please refer to the QuartzDesk JVM Agent Installation And Upgrade Guide available for download in Installation And Upgrade Guides.
  3. Close the warning dialog and repeat the original action.

When you see this warning it means the license edition used for the QuartzDesk Web Application is not compatible with the license edition used by the QuartzDesk JVM Agent.

QuartzDesk platform requires the license edition of the QuartzDesk JVM Agent to be the same or higher than the license edition of the QuartzDesk Web Application. For example, if you are running the QuartzDesk Web Application with the Standard edition license, then the QuartzDesk JVM Agent edition license must be either Standard, or Enterprise.

Steps to fix the problem:

  1. Edit the Quartz scheduler connection to see which JVM and Quartz scheduler instance the connection points to. The target JVM can be identified using the host and port. The Quartz scheduler instance can be identified using the Quartz scheduler object name.
  2. Make sure the QuartzDesk JVM Agent uses a matching, or higher license edition then the QuartzDesk Web Application. For license installation details, please refer to the QuartzDesk JVM Agent Installation And Upgrade Guide available for download in Installation And Upgrade Guides.
  3. Close the warning dialog and repeat the original action.

When you see this warning it means the QuartzDesk Public API Library JAR has not been installed on the Quartz scheduler's classpath as described in the QuartzDesk JVM Agent Installation and Upgrade Guide.

The QuartzDesk Public API Library connects the Quartz scheduler with the QuartzDesk JVM Agent. Without this connection, some of the advanced QuartzDesk features cannot function properly and are disbaled in the QuartzDesk GUI.

Steps to fix the problem:

  1. Edit the Quartz scheduler connection to see which JVM and Quartz scheduler instance the connection points to. The target JVM can be identified using the host and port. The Quartz scheduler instance can be identified using the Quartz scheduler object name.
  2. Make sure the QuartzDesk Public API Library JAR is installed on the Quartz scheduler's classpath and is loaded by the same classloader that loads the Quartz scheduler API (quartz-x.y.z.jar). For installation details, please refer to the QuartzDesk JVM Agent Installation And Upgrade Guide available for download in Installation And Upgrade Guides.
  3. Make sure there is only one QuartzDesk Public API Library JAR on the Quartz scheduler's classpath.
  4. Close the warning dialog and repeat the original action.

When you see this warning it means the QuartzDesk Public API Library JAR is present on the Quartz scheduler's classpath, but it is not loaded by the same class loader that loads the Quartz scheduler API (quartz-x.y.z-jar).

Steps to fix the problem:

  1. Edit the Quartz scheduler connection to see which JVM and Quartz scheduler instance the connection points to. The target JVM can be identified using the host and port. The Quartz scheduler instance can be identified using the Quartz scheduler object name.
  2. Make sure the QuartzDesk Public API Library JAR is installed on the Quartz scheduler's classpath and is loaded by the same classloader that loads the Quartz scheduler API (quartz-x.y.z.jar). For installation details, please refer to the QuartzDesk JVM Agent Installation And Upgrade Guide available for download in Installation And Upgrade Guides.
  3. Make sure there is only one QuartzDesk Public API Library JAR on the Quartz scheduler's classpath.
  4. Close the warning dialog and repeat the original action.

When you see this warning it means the version of the QuartzDesk Public API Library installed on the Quartz scheduler's classpath is not compatible with the version of the QuartzDesk JVM Agent installed on the JVM the Quartz scheduler connection points to.

Steps to fix the problem:

  1. Edit the Quartz scheduler connection to see which JVM and Quartz scheduler instance the connection points to. The target JVM can be identified using the host and port. The Quartz scheduler instance can be identified using the Quartz scheduler object name.
  2. Make sure the correct version of the QuartzDesk Public API Library is installed on the Quartz scheduler's classpath. At least the major and minor version numbers must match. For installation details, please refer to the QuartzDesk JVM Agent Installation And Upgrade Guide available for download in Installation And Upgrade Guides.
  3. Make sure there is only one QuartzDesk Public API Library JAR on the Quartz scheduler's classpath.
  4. Close the warning dialog and repeat the original action.

When you see this message, it means the statistics data has not been generated yet.

It can be caused by either of the following reasons:

  • The execution history is empty because no jobs have been executed yet. Therefore there is no execution history data to generate the execution statistics from.
  • The execution history is not empty, but the execution history data has not been processed yet. The processing is performed by the QuartzDesk AgentExecStatisticsJob which is normally executed every hour on the hour.

This happens in clustered Quartz scheduler deployments that are configured to use auto-generated Quartz scheduler instance IDs (org.quartz.scheduler.instanceId=AUTO) and either of the following two conditions holds true:

    1. Quartz is not configured to use any particular instance ID generator class. In this case Quartz uses the default instance ID generator class org.quartz.simpl.SimpleInstanceIdGenerator.
    2. Quartz is explicitely configured to use the org.quartz.simpl.SimpleInstanceIdGenerator instance ID generator class.

org.quartz.simpl.SimpleInstanceIdGenerator class produces random instance IDs upon every Quartz scheduler restart. Unless you have configured Quartz to use an explicit JMX export name for its MBean using the org.quartz.scheduler.jmx.objectName configuration property, Quartz embeds the generated instance ID into the JMX schduler object name. QuartzDesk platform uses the JMX scheduler object name as a Quartz scheduler ID and requires this object name to be constant.

For the above reasons, please avoid using the org.quartz.simpl.SimpleInstanceIdGenerator class and instead use one of the following implementations that are available in the Quartz scheduler distribution. The instance ID generator class to be used by Quartz can be set using the org.quartz.scheduler.instanceIdGenerator.class Quartz configuration property.

ImplementationDescription
org.quartz.simpl.HostnameInstanceIdGeneratorReturns the hostname as the instance ID.
org.quartz.simpl.SystemPropertyInstanceIdGeneratorReturns the value of the org.quartz.scheduler.instanceId system property. Available with Quartz 2.0 or higher.


If none of the above implementations suits your needs, you can implement your own InstanceIdGenerator implementation that can, for example, read the scheduler ID from the application configuration file etc. 

Yes. QuartzDesk Web Application makes use of the standard J2EE authentication and authorization security model that delegates authentication and authorization requests to security services provided by the application server / container.

Therefore, as long as your application server / container can be configured to use an LDAP server, Active Directory, relational database, or SSO service, there should be no problem using these types of storages.

For example, Tomcat by default uses the UserDatabaseRealm to store and query for user authentication and authorization details. This security realm implementation stores user login credentials and roles in ${TOMCAT_HOME}/conf/tomcat-users.xml file. As described in the Tomcat's Realm Configuration HOW-TO, you can configure Tomcat to use other realm implementations, such as:

JDBCRealm and DataSourceRealm
Use a configured relational database.
JNDIRealm
Uses an LDAP server that is accessed via the JNDI protocol.
MemoryRealm
Uses in-memory objects populated from a configured file.
JAASRealm
Uses a configured Java Authentication and Authorization Service (JAAS).


If none of the above ready-to-use Tomcat realm implementations suits your needs, you can implement and configure your own Realm.

Absolutely. However you need to modify your job implementation class a bit so that QuartzDesk can associate the spawned worker threads with the correct job execution thread.

If your Quartz job implementation class uses the Java Executor API and worker threads that do not produce Future results:

public class MyJob 
    implements Job 
{
  ... 

  public void execute(JobExecutionContext context) 
      throws JobExecutionException 
  { 
    ...
    Executor executor = ... // get a Java Executor 
    executor.execute( new WorkerThreadRunnable( Thread.currentThread(), YourRunnableInstance ) ); 
    ...
  }

  ... 
}

If your Quartz job implementation class uses the Java ExecutorService API and worker threads that produce Future results:

public class MyJob 
    implements Job 
{ 
  ... 

  public void execute(JobExecutionContext context) 
      throws JobExecutionException 
  { 
    ... 
    ExecutorService executorService = ... // get a Java ExecutorService
    Future result = executor.submit( new WorkerThreadCallable( Thread.currentThread(), YourCallableInstance ) ); 
    ...
  } 

  ... 
}

As shown in the above examples, you need to wrap the worker thread's body in either a WorkerThreadRunnable, or WorkerThreadCallable instance. WorkerThreadRunnable and WorkerThreadCallable classes are provided by the QuartzDesk Public API Library (quartzdesk-api.jar) and in order to use these classes in your application, you must add the QuartzDesk Public API Library to your application as a compile-time dependency.If you application uses Maven, you need to add the following to your project POM's dependencies:

<dependency>
  <groupId>com.quartzdesk</groupId>
  <artifactId>quartzdesk-api</artifactId>
  <version>x.y.z</version>
  <scope>compile</scope>
</dependency>

If you want to send QuartzDesk execution notification messages through GMail, you need to set up a message channel profile with the following parameters:

Sender: GMail account email address
SMTP Host: smtp.gmail.com
SMTP Port: 25
Use TLS: checked
Username: GMail account email address
Password: GMail account password

Prior to using your GMail message channel profile, test it by sending a test message. If the test message is successfully sent and delivered, your message channel profile is ready to be used.

If you get the following error message, you will need to allow external applications to access your GMail account at https://www.google.com/settings/security/lesssecureapps. To enable access, log in with the username and password specified in your GMail message channel profile.

GMail Authentication Failure

Once you have successfully logged in, check the "Turn On" option.

GMail - Enable Access For Less Secure Applications

Now you should be able to send notification messages through GMail.