Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Quartz Scheduler in Web application

I am learning quartz and Have tried some samples which works in Console application. Now am trying in web aplications. Following is what I did.

web.xml

<?xml version="1.0" encoding="UTF-8"?>
 <web-app>
 <servlet>
     <servlet-name>QuartzInitializer</servlet-name>
     <display-name> Quartz Initializer Servlet</display-name>
     <servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
     <load-on-startup>1</load-on-startup>
     <init-param>
         <param-name>config-file</param-name>
         <param-value>quartz.properties</param-value>
     </init-param>
     <init-param>
         <param-name>shutdown-on-unload</param-name>
         <param-value>true</param-value>
     </init-param>
     <init-param>
         <param-name>start-scheduler-on-load</param-name>
         <param-value>true</param-value>
     </init-param>
 </servlet>
</web-app>

quartz.properties

org.quartz.plugin.jobInitializer.class =    org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = quartz-config.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval = 10
org.quartz.plugin.jobInitializer.wrapInUserTransaction = false

# Configuring ThreadPool
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 30
org.quartz.threadPool.threadPriority = 5

quartz-config.xml

<?xml version="1.0" encoding="UTF-8"?>
   <job-scheduling-data
xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
version="1.8">

<pre-processing-commands>
    <delete-jobs-in-group>*</delete-jobs-in-group>  <!-- clear all jobs in scheduler -->
    <delete-triggers-in-group>*</delete-triggers-in-group> <!-- clear all triggers in scheduler -->
</pre-processing-commands>

<processing-directives>
    <overwrite-existing-data>true</overwrite-existing-data>
    <ignore-duplicates>false</ignore-duplicates>
</processing-directives>

<schedule>
    <job>
        <name>MyJob</name>
        <job-class>com.kaplan.external.quartz.KpubScheduler</job-class>
    </job>
    <trigger>
        <simple>
            <name>TenSecondIntervals</name>
            <job-name>MyJob</job-name>
            <repeat-count>-1</repeat-count> <!-- repeat forever  -->
            <repeat-interval>10000</repeat-interval>  <!--  every 10 seconds -->
        </simple>
    </trigger>

</schedule>
 </job-scheduling-data>

KpubScheduler.java

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.StatefulJob;

 public class KpubScheduler implements StatefulJob {

  protected static final Log log = LogFactory.getLog(KpubScheduler.class);  
  public void execute(JobExecutionContext context) throws JobExecutionException {
    try {
         System.out.println("Quartz Config..........");
         log.info("entering the quartz config");  

    } catch (Exception ex) {
        log.info("entering the quartz config");  

    }
  }
}

Now I have started the server. After it gets started, my KpubScheduler has to get invoked and I should get the log info's and Sysout's. But Nothing is happening. If I have a look at the log, its just giving this

Dec 29, 2010 8:21:37 PM org.apache.catalina.core.ApplicationContext log
INFO: QuartzInitializer: Scheduler has been started...
Dec 29, 2010 8:21:37 PM org.apache.catalina.core.ApplicationContext log
 INFO: QuartzInitializer: Storing the Quartz Scheduler Factory in the servlet context at key: org.quartz.impl.StdSchedulerFactory.KEY

What may be the problem?. Am I doing it right?.

like image 343
i2ijeya Avatar asked Dec 29 '10 15:12

i2ijeya


People also ask

What is quartz scheduler in C#?

It's an open source job scheduling system that can be used from the smallest apps to the large-scale enterprise systems. The official website of Quartz.Net states: "Quartz.Net is a full-featured, open source job scheduling system that can be used from smallest apps to large scale enterprise systems."

What is quartz scheduler in spring?

Quartz is an open source Java library for scheduling Jobs. It has a very rich set of features including but not limited to persistent Jobs, transactions, and clustering. You can schedule Jobs to be executed at a certain time of day, or periodically at a certain interval, and much more.

What is quartz scheduler used for?

QuartzJobScheduling is an open-source job scheduling library. It has a rich set of features that can integrate into our Java applications virtually. We can integrate it with either a stand-alone application or the largest e-commerce system. Quartz is used for creating complex schedules having tens-of-thousands of jobs.


1 Answers

it seems theoretically ok, but do you mean that the usage of this <pre-processing-commands /> causes maybe to be deleted your jobs? can you try without them?

my application seems like yours but i have no problem with Quartz.

Are you sure that you did configure your log levels correctly for KpubScheduler?

like image 96
Erhan Bagdemir Avatar answered Sep 20 '22 15:09

Erhan Bagdemir