Class Retry

All Implemented Interfaces:
Serializable, Runnable, ArooaContextAware, ArooaSessionAware, Forceable, PropertyChangeNotifier, Iconic, LogEnabled, Resettable, Stateful, Stoppable, Structural

public class Retry extends TimerBase
Author:
Rob Gordon.
See Also:

Description

This is a timer that runs it's job according to the schedule until the schedule expires or the job completes successfully.

Example

File Polling. Check every 5 seconds for a file.
<oddjob id="this">

    <job>

        <scheduling:retry name="File Polling Example" xmlns:scheduling="http://rgordon.co.uk/oddjob/scheduling" xmlns:schedules="http://rgordon.co.uk/oddjob/schedules">

            <schedule>

                <schedules:interval interval="00:00:05"/>

            </schedule>

            <job>

                <sequential id="look" name="Look for files">

                    <jobs>

                        <exists file="${this.dir}/work/*.foo" id="check" name="Check File Exists"/>

                        <echo name="Echo to Console">Found ${check.exists[0]}</echo>

                    </jobs>

                </sequential>

            </job>

        </scheduling:retry>

    </job>

</oddjob>
Using Retry with a Timer. A daily job retries twice.
<oddjob xmlns:schedules="http://rgordon.co.uk/oddjob/schedules" xmlns:scheduling="http://rgordon.co.uk/oddjob/scheduling" xmlns:state="http://rgordon.co.uk/oddjob/state">

    <job>

        <scheduling:timer id="timer">

            <schedule>

                <schedules:daily from="08:00"/>

            </schedule>

            <job>

                <scheduling:retry id="retry">

                    <schedule>

                        <schedules:count count="2"/>

                    </schedule>

                    <job>

                        <state:flag id="flag-job" state="EXCEPTION"/>

                    </job>

                </scheduling:retry>

            </job>

        </scheduling:timer>

    </job>

</oddjob>