javax.resource.spi.work

Interface WorkManager

  • All Known Subinterfaces:
    DistributableWorkManager

    public interface WorkManager
    This interface models a WorkManager which provides a facility to submit Work instances for execution. This frees the user from having to create Java threads directly to do work. Further, this allows efficient pooling of thread resources and more control over thread usage. The various stages in Work processing are:
    • work submit: A Work instance is being submitted for execution. The Work instance could either be accepted or rejected with a WorkRejectedException set to an appropriate error code.
    • work accepted: The submitted Work instance has been accepted. The accepted Work instance could either start execution or could be rejected again with a WorkRejectedException set to an appropriate error code. There is no guarantee on when the execution would start unless a start timeout duration is specified. When a start timeout is specified, the Work execution must be started within the specified duration (not a real-time guarantee), failing which a WorkRejectedException set to an error code (WorkRejected.TIMED_OUT) is thrown.
    • work rejected: The Work instance has been rejected. The Work instance could be rejected during Work submittal or after the Work instance has been accepted (but before Work instance starts execution). The rejection could be due to internal factors or start timeout expiration. A WorkRejectedException with an appropriate error code (indicates the reason) is thrown in both cases.
    • work started: The execution of the Work instance has started. This means that a thread has been allocated for its execution. But this does not guarantee that the allocated thread has been scheduled to run on a CPU resource. Once execution is started, the allocated thread sets up an appropriate execution context (transaction , security, etc) and calls Work.run(). Note, any exception thrown during execution context setup or Work.run() leads to completion of processing.
    • work completed: The execution of the Work has been completed. The execution could complete with or without an exception. The WorkManager catches any exception thrown during Work processing (which includes execution context setup), and wraps it with a WorkCompletedException.
    Version:
    1.0
    Author:
    Ram Jeyaraman
    • Field Detail

      • IMMEDIATE

        static final long IMMEDIATE
        A constant to indicate timeout duration. A zero timeout value indicates an action be performed immediately. The WorkManager implementation must timeout the action as soon as possible.
        See Also:
        Constant Field Values
      • INDEFINITE

        static final long INDEFINITE
        A constant to indicate timeout duration. A maximum timeout value indicates that an action be performed arbitrarily without any time constraint.
        See Also:
        Constant Field Values
      • UNKNOWN

        static final long UNKNOWN
        A constant to indicate an unknown start delay duration or other unknown values.
        See Also:
        Constant Field Values
    • Method Detail

      • doWork

        void doWork(Work work)
             throws WorkException
        Accepts a Work instance for processing. This call blocks until the Work instance completes execution. There is no guarantee on when the accepted Work instance would start execution ie., there is no time constraint to start execution. (that is, startTimeout=INDEFINITE)
        Parameters:
        work - The unit of work to be done. Could be long or short-lived.
        Throws:
        WorkRejectedException - indicates that a Work instance has been rejected from further processing. This can occur due to internal factors.
        WorkCompletedException - indicates that a Work instance has completed execution with an exception.
        WorkException
      • doWork

        void doWork(Work work,
                    long startTimeout,
                    ExecutionContext execContext,
                    WorkListener workListener)
             throws WorkException
        Accepts a Work instance for processing. This call blocks until the Work instance completes execution.
        Parameters:
        work - The unit of work to be done. Could be long or short-lived.
        startTimeout - a time duration (in milliseconds) within which the execution of the Work instance must start. Otherwise, the Work instance is rejected with a WorkRejectedException set to an appropriate error code (WorkRejectedException.TIMED_OUT). Note, this does not offer real-time guarantees.
        execContext - an object containing the execution context with which the submitted Work instance must be executed.
        workListener - an object which would be notified when the various Work processing events (work accepted, work rejected, work started, work completed) occur.
        Throws:
        WorkRejectedException - indicates that a Work instance has been rejected from further processing. This can occur due to internal factors or start timeout expiration.
        WorkCompletedException - indicates that a Work instance has completed execution with an exception.
        WorkException
      • startWork

        long startWork(Work work)
                throws WorkException
        Accepts a Work instance for processing. This call blocks until the Work instance starts execution but not until its completion. There is no guarantee on when the accepted Work instance would start execution ie., there is no time constraint to start execution. (that is, startTimeout=INDEFINITE)
        Parameters:
        work - The unit of work to be done. Could be long or short-lived.
        Returns:
        the time elapsed (in milliseconds) from Work acceptance until start of execution. Note, this does not offer real-time guarantees. It is valid to return -1, if the actual start delay duration is unknown.
        Throws:
        WorkRejectedException - indicates that a Work instance has been rejected from further processing. This can occur due to internal factors.
        WorkException
      • startWork

        long startWork(Work work,
                       long startTimeout,
                       ExecutionContext execContext,
                       WorkListener workListener)
                throws WorkException
        Accepts a Work instance for processing. This call blocks until the Work instance starts execution but not until its completion. There is no guarantee on when the accepted Work instance would start execution ie., there is no time constraint to start execution.
        Parameters:
        work - The unit of work to be done. Could be long or short-lived.
        startTimeout - a time duration (in milliseconds) within which the execution of the Work instance must start. Otherwise, the Work instance is rejected with a WorkRejectedException set to an appropriate error code (WorkRejectedException.TIMED_OUT). Note, this does not offer real-time guarantees.
        execContext - an object containing the execution context with which the submitted Work instance must be executed.
        workListener - an object which would be notified when the various Work processing events (work accepted, work rejected, work started, work completed) occur.
        Returns:
        the time elapsed (in milliseconds) from Work acceptance until start of execution. Note, this does not offer real-time guarantees. It is valid to return -1, if the actual start delay duration is unknown.
        Throws:
        WorkRejectedException - indicates that a Work instance has been rejected from further processing. This can occur due to internal factors or start timeout expiration.
        WorkException
      • scheduleWork

        void scheduleWork(Work work)
                   throws WorkException
        Accepts a Work instance for processing. This call does not block and returns immediately once a Work instance has been accepted for processing. There is no guarantee on when the submitted Work instance would start execution ie., there is no time constraint to start execution. (that is, startTimeout=INDEFINITE).
        Parameters:
        work - The unit of work to be done. Could be long or short-lived.
        Throws:
        WorkRejectedException - indicates that a Work instance has been rejected from further processing. This can occur due to internal factors.
        WorkException
      • scheduleWork

        void scheduleWork(Work work,
                          long startTimeout,
                          ExecutionContext execContext,
                          WorkListener workListener)
                   throws WorkException
        Accepts a Work instance for processing. This call does not block and returns immediately once a Work instance has been accepted for processing.
        Parameters:
        work - The unit of work to be done. Could be long or short-lived.
        startTimeout - a time duration (in milliseconds) within which the execution of the Work instance must start. Otherwise, the Work instance is rejected with a WorkRejectedException set to an appropriate error code (WorkRejectedException.TIMED_OUT). Note, this does not offer real-time guarantees.
        execContext - an object containing the execution context with which the submitted Work instance must be executed.
        workListener - an object which would be notified when the various Work processing events (work accepted, work rejected, work started, work completed) occur.
        Throws:
        WorkRejectedException - indicates that a Work instance has been rejected from further processing. This can occur due to internal factors.
        WorkException

Traduction non disponible

Les API Java ne sont pas encore traduites en français sur l'infobrol. Seule la version anglaise est disponible pour l'instant.

Version en cache

21/08/2025 13:04:32 Cette version de la page est en cache (à la date du 21/08/2025 13:04:32) afin d'accélérer le traitement.
Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la version plus récente de la page.

Document créé le 24/12/2007, dernière modification le 18/08/2025
Source du document imprimé : https://www.gaudry.be/java-api-javaee-rf-javax/resource/spi/work/WorkManager.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : https://docs.oracle.com, WorkManager (Java(TM) EE 7 Specification APIs)

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.