Skip to content

Configuring Report Scheduling

The JasperReports Server report scheduling feature is powered by the Quartz scheduler tool. Buildomatic automatically handles configuration settings for Quartz-based report scheduling.

In a deployed JasperReports Server instance, you will find the js.quartz.properties file in this location:

<app-server-path>/ jasperserver -pro /WEB-INF/js.quartz.properties

For mail server configuration, you will find an additional property setting for authentication in this file:

<app-server-path>/webapps/ jasperserver -pro /WEB-INF/applicationContext-report-scheduling.xml

The following configurations are discussed in this section:

  • Mail Server Configuration
  • Quartz Driver Delegate Class
  • Report Scheduler Web URI
  • Quartz Table Prefix
  • Settings for import-export
  • Setting Properties in the default_master.properties file
  • Settings for Skipping Calendar Job Execution Immediately After Import

Mail Server Configuration Settings

You can specify email addresses to be notified when a report run is complete. To do this, configure JasperReports Server to contact an email server. The email server can be contacted via mail or by using a graph API.

Note

By default, JasperReports Server uses mail to contact an email server. To change it to:

  • Graph API: In the js.quartz.properties file, set emailService.type=graph.

  • SendGrid: In the js.quartz.properties file, set emailService.type=sendGrid.

Mail Server Configuration Settings Using E-mail

The following table provides the configuration information to contact an email server via mail:

Configuration File

<app-server>/<deployment>/WEB-INF/js.quartz.properties

Property

Description

report.scheduler.mail.sender.host

The name of the computer hosting the mail server.

report.scheduler.mail.sender.username

The name of the mail server the user JasperReports Server can use.

report.scheduler.mail.sender.password

The password of the mail server user.

report.scheduler.mail.sender.from

The address for the From field on email notifications.

report.scheduler.mail.sender.protocol

The protocol that the mail server uses. JasperReports Server supports only SMTP.

Note: Your entry must be lower case (smtp).

report.scheduler.mail.sender.port

The port number that the mail server uses. The default is typically 25 (other ports may not work in earlier JasperReports Server versions).

**Note** - `host ,username, port` and `password` are mandatory parameters. If any of these parameters are missed, a bean is created with the default values provided in the `js.quartz.properties` file. - If `protocol` is missed, it will set to the default value, which is `SMTP`. - If the `from `address is missed, it picks the value from the `js.quartz.properties` file.

Configuration File

<app-server>/<deployment>/WEB-INF/applicationContext-report-scheduling.xml

Property

Bean

Description

javaMailProperties key="mail.smtp.auth"

reportScheduler

MailSender

If your mail server requires authentication, change this property from false to true.

Mail Server Configuration Settings Using Graph API

Prerequisite for Azure Graph API login

The following are the prerequisites for Azure Graph API login:

  1. Register JasperReports Server as an application on the Azure portal.

  2. Obtain the details for Resource Owner flow and Client Credentials flow.

  3. For Resource Owner flow, obtain the following details:

    1. Username

    2. Password

  4. For Client Credentials flow, obtain the following details:

    1. Client ID

    2. Client Secret

    3. User ID

    4. Tenant ID

  5. Define the Mailbox Permissions and Scope.

    Ensure that the following permissions are defined in the scope:

    1. Mailbox

    2. Mail.Send

    3. Mail.ReadWrite

  6. Obtain the resourceGroupName configured for Azure SQL.

The following table provides the configuration information to contact an email server using a graph API:

Configuration File

<app-server>/<deployment>/WEB-INF/js.quartz.properties

Property

Description

emailService.graph.oauthUrl

The URL of the mail server.

emailService.graph.oauthClientId

The unique application or client ID assigned to JasperReports Server by Azure Active Directory (AD).

emailService.graph.oauthSecret

A secret string that the application uses to identify itself while requesting a token.

emailService.graph.oauthTenantId

An instance of Azure AD.

emailService.graph.oauthUserName

The username to connect to Azure.

emailService.graph.oauthPassword

The password to connect to Azure.

emailService.graph.oauthUserId The unique object ID using which JasperReports Server is registered.
clientSecretCredentialFlow

The authentication is done either by providing the clientSecret or by providing the username and password.

Depending on the authentication you want to use, set emailService.graph.clientSecretCredentialFlow to true or false. If emailService.graph.clientSecretCredentialFlow=true, clientSecret is used for authentication. If set to false, the username and password are used for authentication.

**Note** - For `clientsecretcredential` flow, `clientId, tenantid, clientsecret` and `userid `are mandatory parameters. - For `username and password` flow, `clientid, username` and `password `are mandatory parameters. If any of the mandatory parameters are missed, a bean is created using the default values mentioned in the `js.quartz.properties` file.

azureSql.resourceGroupName To fetch the list of databases, the resource group is required while creating AzureSqlManagementService bean. By default, it is set to defaultResourceGroup.

The bean for graph API is created only when the graph profile is enabled in web.xml. By default, the 'graph' profile in the web.xml file is disabled to prevent unnecessary bean creation. To enable the 'graph' profile:

<context-param>
<param-name>spring.profiles.active</param.name>
<param-value>default,engine,alerting-ie,jrs,graph</param.value>
</context-param>

Mail Server Configuration Settings Using SendGrid API

Prerequisite for SendGrid API

The following are the prerequisites for SendGrid API login:

  1. Create an account on Twilio SendGrid.

  2. Create the SendGrid API key and set the access rights.

  3. Complete domain authentication.

The following table provides the configuration information to schedule alerts and jobs using a SendGrid API:

Configuration File

<app-server>/<deployment>/WEB-INF/js.quartz.properties

Property

Description

emailService.type

The email service type to be used.

Change it to sendGrid.

sendGrid.api The API key created on SendGrid portal.
report.scheduler.mail.sender.from The email ID of the authenticated sender on SendGrid portal.

**Note** The API key and the sender email ID are mandatory for sending and receiving email using SendGrid.

Note

Following are the limitations while using the SendGrid API:

  • The total size of the email, including attachments, cannot exceed 30 MB.

  • The total number of recipients cannot be more than 1,000. This includes recipients in to, cc, and bcc, and each object included in personalization.

  • The total length of custom arguments must be less than 10,000 bytes.

  • Unicode encoding is not supported for the from field.

  • ; and , are not allowed in the to.name , cc.name , and bcc.name personalization.

Database Settings for the Quartz Driver Delegate Class

Quartz uses the Quartz driver delegate class to interact with the JDBC driver.

Note

If you used buildomatic to install JasperReports Server, the correct value of the Quartz driver delegate class is automatically set for your database.

If you did not use buildomatic to install JasperReports Server, refer to the following table to edit the js.quartz.properties file and set the value of the Quartz driver delegate class to the correct value for your database.

Configuration File

<app-server>/<deployment>/WEB-INF/js.quartz.properties

Property

Database

Value

quartz.delegateClass

MySQL

org.quartz.impl.jdbcjobstore.StdJDBCDelegate

PostgreSQL

org.quartz.impl.jdbcjobstore.PostgreSQLDelegate

DB2

org.quartz.impl.jdbcjobstore.DB2v8Delegate

Oracle

org.quartz.impl.jdbcjobstore.StdJDBCDelegate

SQL Server1

org.quartz.impl.jdbcjobstore.StdJDBCDelegate

For SQL Server on WebSphere 8.5 use org.quartz.impl.jdbcjobstore.MSSQLDelegate

Settings for the Report Scheduler Web URI

JasperReports Server uses the Report Scheduler Web URI to construct the link it sends in the output of a scheduled job. This link must be correct for the user to access the report on the server.

The port on which you run JasperReports Server and the context root of the deployed JasperReports Server web application determine the report scheduler Web URI. The default context root is jasperserver.

To set this value manually, edit this file:

<app-server>/<deployment>/WEB-INF/js.quartz.properties.

Change the properties as shown in the following table.

Property

App Server

Example Value

report.scheduler.web.deployment.uri

Apache Tomcat

http://localhost:8080/jasperserver -pro

JBoss

http://localhost:8080/jasperserver -pro

WebLogic

http://localhost:7001/jasperserver-pro

WebSphere

http://localhost:9080/jasperserver-pro

Settings for the Quartz Table Prefix

For databases that support schemas, such as Oracle, SQL Server, and DB2, you can set the Quartz table prefix to include the schema, if you use one. In the default configuration, only DB2 requires an explicit schema name.

Note

If you installed JasperReports Server using buildomatic, the Quartz table prefix is set automatically.

To set this value, edit the file <app-server>/<deployment>/WEB-INF/js.quartz.properties. Change the following property:

Property

Description

quartz.tablePrefix

The prefix for the quartz table, including any schema name, for example JSPRSRVR.QRTZ_ for DB2.

Settings for Import-Export

If you manually configure the import-export shell scripts instead of using the buildomatic, make sure your settings for the Quartz driver delegate class property are correct for your database.

Note

If you install using buildomatic, these settings are handled automatically (in buildomatic import-export).

To configure the import-export scripts manually, edit this file:

<js-install>/buildomatic/conf_source/``iePro`` /js.quartz.properties

Change the following properties:

Property

Description

quartz.delegateClass

Set to the same value as described in Database Settings for the Quartz Driver Delegate Class.

quartz.tablePrefix

Set to the same value as described in Settings for the Quartz Table Prefix.

Setting Properties in the default_master.properties File

You can modify the default_master.properties file to configure the JasperReports Server functionality. Uncomment the properties that you want to have them take effect on installation. The properties are documented directly in the default_master.properties file:

<js-install>/buildomatic/default_master.properties

You will find a sample master.properties here (in the case of PostgreSQL):

<js-install>/buildomatic/sample_conf/postgresql_master.properties

When you run the js-install`` .sh/bat script (or the underlying deploy-webapp-``pro`` ant target), these properties will be set in the deployed JasperReports Server in the js.quartz.properties file.

You can set the following properties in default_master.properties file (default values are shown):

  • notification.service.multiTenant.config=none

  • emailService.type=mail

  • calenderTrigger.resetStartTimeOnImport=false

  • simpleTrigger.resetStartTimeOnImport=false

Report Scheduler Email Properties

You can set the following properties to configure the Report Scheduler email (default values are shown):

quartz.mail.sender.host=mail.localhost.com

quartz.mail.sender.port=25

quartz.mail.sender.protocol=smtp

quartz.mail.sender.username=admin

quartz.mail.sender.password=password

quartz.mail.sender.from=admin@localhost.com

quartz.web.deployment.uri=http://localhost:8080/``jasperserver`` ``-pro``

For information about the Prerequisite for Azure Graph API login, see Mail Server Configuration Settings Using Graph API.

You can set the following properties to configure the Report Scheduler email using a graph API (default values are shown):

emailService.graph.oauthUrl=https://graph.microsoft.com

emailService.graph.oauthClientId=oauthClientId

emailService.graph.oauthSecret=oauthSecret

emailService.graph.oauthTenantId=oauthTenantId

emailService.graph.oauthUserName=username

emailService.graph.oauthPassword=password

emailService.graph.oauthUserId=oauthUserId

emailService.graph.clientSecretCredentialFlow=true

azureSql.resourceGroupName=defaultResourceGroup

Note

When sending a file with email:

  • If the file size is under 3 MB, graph uses single POST.

  • If the file size is in between 3MB and 150 MB it uses the largeAttachment upload flow.

For details, refer to Outlook-Large-Attachments.

For information about properties to be set when composing email, refer to the Setting Properties in the jasperserver_config.properties File section in the JasperReports® Server Administrator Guide.

Diagnostic Properties

The following properties configure the Diagnostic functionality:

diagnostic.jmx.usePlatformServer = false

diagnostic.jmx.port = 10990

diagnostic.jmx.name = jasperserver

diagnostic.jmx.rmiHost = localhost

Look at the descriptions of the properties in the default_master.properties file and also refer to the JasperReports Server Administrator Guide for more information on these settings.

Settings to Skip Calendar Job Execution Immediately After Import

When importing scheduled jobs, all calendar jobs with misfired triggers are re-executed. This results in unwanted and unplanned executions. This can be overcome by changing the Misfire policy on the server. But, that will impact all other jobs along with the calendar trigger.

To avoid this, you can add two new properties calenderTrigger.resetStartTimeOnImport and simpleTrigger.resetStartTimeOnImport to stop executing calendar jobs immediately after import.

These properties, when set to false, skip executing calendar jobs right after import. The job is executed at the next trigger (calendar or simple). On setting the properties to true, the start time of the job is reset to the current time and it is not considered as misfired after the import.

Configuring Scheduler Misfire Policy

Property

Description

calenderTrigger.resetStartTimeOnImport

By default, calenderTrigger.resetStartTimeOnImport=false. If set to true, then while importing the job, start time is recalculated to the import time. And, the job execution starts in the future based on the condition set in calendar trigger.
simpleTrigger.resetStartTimeOnImport

By default, simpleTrigger.resetStartTimeOnImport=false. If set to true, then job start time is refreshed to current time.

**Note** For old jobs with simple triggers that were completed, but remained in the system, the jobs are executed again because the start time recalculated to the current time.