AgileApps Support Wiki Pre Release

Difference between revisions of "Configuring the Quartz Scheduler"

From AgileApps Support Wiki
imported>Aeric
imported>Aeric
Line 1: Line 1:
<noinclude>__TOC__</noinclude>
==== Configuring the Quartz Scheduler ====
==== Configuring the Quartz Scheduler ====


Line 103: Line 104:
3. For the second longjump instance, follow the steps in [[#Setting up Quartz on a LongJump Instance|Setting up Quartz on a LongJump Instance]]
3. For the second longjump instance, follow the steps in [[#Setting up Quartz on a LongJump Instance|Setting up Quartz on a LongJump Instance]]


=====Setting up a Quartz Cluster=====
To run a create a cluster of Quartz instances running on different servers, each server ''must'' have the settings shown here. Otherwise, a Quartz instance will not know that the others exist, and will not lock job records that are in progress, or mark them as having been processed.
1. Edit <tt>longjump_installation/tomcat/webapps/networking/WEB-INF/web.xml</tt>
2. Modify the quartz servlet mapping so that:
:a. The <tt>config-file</tt> parameter points to the Quartz properties file:<br/> <tt>longjump_installation/tomcat/conf/RN/quartz.properties</tt>
:b. The <tt>start-scheduler-on-load</tt> property is set to <tt>true</tt>, to make sure that quartz is started whenever LongJump starts.
:Example:
:{| width="60%"
<pre>
<servlet>
    <servlet-name>
        QuartzInitializer
    </servlet-name>
    <display-name>
      Quartz Initializer Servlet
    </display-name>
    <servlet-class>
        org.quartz.ee.servlet.QuartzInitializerServlet
    </servlet-class>
    <init-param>
        <param-name>config-file</param-name>
        <param-value>C:/apache-tomcat-6.0.20/conf/RN/quartz.properties</param-value>
                        [ ^-- Path to the properties file ]
    </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>                 
                    [ ^--Enables Quartz ]
    </init-param>
    <load-on-startup>
        1
    </load-on-startup>
</servlet>
</pre>
|}
3. Edit <tt>longjump_installation/tomcat/conf/RN/quartz.properties</tt>
4. Modify this line:
:{|
<pre>
org.quartz.scheduler.instanceId = AUTO                [EDIT THIS LINE]
</pre>
|}
5. Under <tt># Configure JobStore</tt>, add these lines:
:{|
<pre>
...
# Configure JobStore
org.quartz.jobStore.misfireThreshold = 60000          [ADD THESE LINES]
org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 20000
</pre>
|}
<noinclude>


[[Category:Installation]]
[[Category:Installation]]
</noinclude>

Revision as of 18:03, 17 June 2011

Configuring the Quartz Scheduler

Warn.png

Important:

  • Quartz must be enabled on one LongJump instance, or LongJump won't run.
  • If you have multiple LongJump instances, Quartz should run on only one of them, unless you follow the Quartz clustering instructions below.
  • Changing the quartz configuration requires a restart of all Application Servers.
Setting up Quartz on a Single LongJump Instance

1. Edit longjump_installation/tomcat/webapps/networking/WEB-INF/web.xml

2. Modify the quartz servlet mapping so that:

a. The config-file parameter points to the Quartz properties file:
longjump_installation/tomcat/conf/RN/quartz.properties
b. The start-scheduler-on-load property is set to true, to make sure that quartz is started whenever LongJump starts.
Example:
<servlet>
    <servlet-name>
        QuartzInitializer
    </servlet-name>

    <display-name>
       Quartz Initializer Servlet
    </display-name>

    <servlet-class>
        org.quartz.ee.servlet.QuartzInitializerServlet
    </servlet-class>

    <init-param>
        <param-name>config-file</param-name>
        <param-value>C:/apache-tomcat-6.0.20/conf/RN/quartz.properties</param-value>
                         [ ^-- Path to the properties file ]
    </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>                  
                     [ ^--Enables Quartz ]
    </init-param>

    <load-on-startup>
         1
    </load-on-startup>
</servlet>

3. Edit longjump_installation/tomcat/conf/RN/quartz.properties

4. Add the following information:

a. Database user name (an admin user)
b. Password for that user
Example:
org.quartz.dataSource.myDS.URL = jdbc:mysql://...

org.quartz.dataSource.myDS.user = rootuser                 [database user]

org.quartz.dataSource.myDS.password = password        [database user password]
Moving Quartz to run on Another LongJump Instance

Let’s say, you have had just one instance of LongJump, and you have decided to add another to handle the traffic volume. And let's say you also decide to move quartz to the new instance, to further reduce the load on the original instance. To that, you disable Quartz on the first instance, and start it on the second.

Here is the procedure:

1. Open longjump_installation/tomcat/webapps/networking/WEB-INF/web.xml

2. Find the quartz servlet mapping for the first instance:

<servlet>
     <servlet-name>
         QuartzInitializer
     </servlet-name>

      ...

     <init-param>
         <param-name>start-scheduler-on-load</param-name>
         <param-value>false</param-value>
                      [ ^-Disables Quartz ]
     </init-param>

      ...

</servlet>

3. For the second longjump instance, follow the steps in Setting up Quartz on a LongJump Instance

Setting up a Quartz Cluster

To run a create a cluster of Quartz instances running on different servers, each server must have the settings shown here. Otherwise, a Quartz instance will not know that the others exist, and will not lock job records that are in progress, or mark them as having been processed.

1. Edit longjump_installation/tomcat/webapps/networking/WEB-INF/web.xml

2. Modify the quartz servlet mapping so that:

a. The config-file parameter points to the Quartz properties file:
longjump_installation/tomcat/conf/RN/quartz.properties
b. The start-scheduler-on-load property is set to true, to make sure that quartz is started whenever LongJump starts.
Example:
<servlet>
    <servlet-name>
        QuartzInitializer
    </servlet-name>

    <display-name>
       Quartz Initializer Servlet
    </display-name>

    <servlet-class>
        org.quartz.ee.servlet.QuartzInitializerServlet
    </servlet-class>

    <init-param>
        <param-name>config-file</param-name>
        <param-value>C:/apache-tomcat-6.0.20/conf/RN/quartz.properties</param-value>
                         [ ^-- Path to the properties file ]
    </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>                  
                     [ ^--Enables Quartz ]
    </init-param>

    <load-on-startup>
         1
    </load-on-startup>
</servlet>

3. Edit longjump_installation/tomcat/conf/RN/quartz.properties

4. Modify this line:

org.quartz.scheduler.instanceId = AUTO                [EDIT THIS LINE]

5. Under # Configure JobStore, add these lines:

...
# Configure JobStore
org.quartz.jobStore.misfireThreshold = 60000          [ADD THESE LINES]
org.quartz.jobStore.isClustered = true
org.quartz.jobStore.clusterCheckinInterval = 20000