Package jakarta.resource.spi.work
Interface WorkManager
- 
- All Known Subinterfaces:
- DistributableWorkManager
 
 public interface WorkManagerThis interface models aWorkManagerwhich provides a facility to submitWorkinstances 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 inWorkprocessing are:-  work submit: A Workinstance is being submitted for execution. TheWorkinstance could either be accepted or rejected with aWorkRejectedExceptionset to an appropriate error code.
-  work accepted: The submitted Workinstance has been accepted. The acceptedWorkinstance could either start execution or could be rejected again with aWorkRejectedExceptionset 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, theWorkexecution must be started within the specified duration (not a real-time guarantee), failing which aWorkRejectedExceptionset to an error code (WorkRejected.TIMED_OUT) is thrown.
-  work rejected: The Workinstance has been rejected. TheWorkinstance could be rejected duringWorksubmittal or after theWorkinstance has been accepted (but before Work instance starts execution). The rejection could be due to internal factors or start timeout expiration. AWorkRejectedExceptionwith an appropriate error code (indicates the reason) is thrown in both cases.
-  work started: The execution of the Workinstance 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 Workhas been completed. The execution could complete with or without an exception. TheWorkManagercatches any exception thrown duringWorkprocessing (which includes execution context setup), and wraps it with aWorkCompletedException.
 - Version:
- 1.0
- Author:
- Ram Jeyaraman
 
- 
- 
Field SummaryFields Modifier and Type Field Description static longIMMEDIATEA constant to indicate timeout duration.static longINDEFINITEA constant to indicate timeout duration.static longUNKNOWNA constant to indicate an unknown start delay duration or other unknown values.
 - 
Method SummaryAll Methods Instance Methods Abstract Methods Modifier and Type Method Description voiddoWork(Work work)Accepts aWorkinstance for processing.voiddoWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener)Accepts aWorkinstance for processing.voidscheduleWork(Work work)Accepts aWorkinstance for processing.voidscheduleWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener)Accepts aWorkinstance for processing.longstartWork(Work work)Accepts aWorkinstance for processing.longstartWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener)Accepts aWorkinstance for processing.
 
- 
- 
- 
Field Detail- 
IMMEDIATEstatic 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
 
 - 
INDEFINITEstatic 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
 
 - 
UNKNOWNstatic final long UNKNOWN A constant to indicate an unknown start delay duration or other unknown values.- See Also:
- Constant Field Values
 
 
- 
 - 
Method Detail- 
doWorkvoid doWork(Work work) throws WorkException Accepts aWorkinstance for processing. This call blocks until theWorkinstance completes execution. There is no guarantee on when the acceptedWorkinstance 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- Workinstance has been rejected from further processing. This can occur due to internal factors.
- WorkCompletedException- indicates that a- Workinstance has completed execution with an exception.
- WorkException
 
 - 
doWorkvoid doWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener) throws WorkException Accepts aWorkinstance for processing. This call blocks until theWorkinstance 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- Workinstance must start. Otherwise, the- Workinstance is rejected with a- WorkRejectedExceptionset 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- Workinstance must be executed.
- workListener- an object which would be notified when the various- Workprocessing events (work accepted, work rejected, work started, work completed) occur.
- Throws:
- WorkRejectedException- indicates that a- Workinstance has been rejected from further processing. This can occur due to internal factors or start timeout expiration.
- WorkCompletedException- indicates that a- Workinstance has completed execution with an exception.
- WorkException
 
 - 
startWorklong startWork(Work work) throws WorkException Accepts aWorkinstance for processing. This call blocks until theWorkinstance starts execution but not until its completion. There is no guarantee on when the acceptedWorkinstance 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 Workacceptance 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- Workinstance has been rejected from further processing. This can occur due to internal factors.
- WorkException
 
 - 
startWorklong startWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener) throws WorkException Accepts aWorkinstance for processing. This call blocks until theWorkinstance starts execution but not until its completion. There is no guarantee on when the acceptedWorkinstance 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- Workinstance must start. Otherwise, the- Workinstance is rejected with a- WorkRejectedExceptionset 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- Workinstance must be executed.
- workListener- an object which would be notified when the various- Workprocessing events (work accepted, work rejected, work started, work completed) occur.
- Returns:
- the time elapsed (in milliseconds) from Workacceptance 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- Workinstance has been rejected from further processing. This can occur due to internal factors or start timeout expiration.
- WorkException
 
 - 
scheduleWorkvoid scheduleWork(Work work) throws WorkException Accepts aWorkinstance for processing. This call does not block and returns immediately once aWorkinstance has been accepted for processing. There is no guarantee on when the submittedWorkinstance 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- Workinstance has been rejected from further processing. This can occur due to internal factors.
- WorkException
 
 - 
scheduleWorkvoid scheduleWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener) throws WorkException Accepts aWorkinstance for processing. This call does not block and returns immediately once aWorkinstance 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- Workinstance must start. Otherwise, the- Workinstance is rejected with a- WorkRejectedExceptionset 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- Workinstance must be executed.
- workListener- an object which would be notified when the various- Workprocessing events (work accepted, work rejected, work started, work completed) occur.
- Throws:
- WorkRejectedException- indicates that a- Workinstance has been rejected from further processing. This can occur due to internal factors.
- WorkException
 
 
- 
 
-