public class SimpleTaskWorkManager extends Object implements WorkManager
WorkManager implementation that
delegates to a Spring TaskExecutor.
Provides simple task execution including start timeouts, but without support
for a JCA ExecutionContext (i.e. without support for imported transactions).
Uses a SyncTaskExecutor for doWork(javax.resource.spi.work.Work)
calls and a SimpleAsyncTaskExecutor
for startWork(javax.resource.spi.work.Work) and scheduleWork(javax.resource.spi.work.Work) calls, by default.
These default task executors can be overridden through configuration.
NOTE: This WorkManager does not provide thread pooling by default!
Specify a ThreadPoolTaskExecutor
(or any other thread-pooling TaskExecutor) as "asyncTaskExecutor" in order to
achieve actual thread pooling.
This WorkManager automatically detects a specified
AsyncTaskExecutor implementation
and uses its extended timeout functionality where appropriate.
JCA WorkListeners are fully supported in any case.
setSyncTaskExecutor(org.springframework.core.task.TaskExecutor),
setAsyncTaskExecutor(org.springframework.core.task.AsyncTaskExecutor)IMMEDIATE, INDEFINITE, UNKNOWN| Constructor and Description |
|---|
SimpleTaskWorkManager() |
| Modifier and Type | Method and Description |
|---|---|
void |
doWork(Work work) |
void |
doWork(Work work,
long startTimeout,
ExecutionContext executionContext,
WorkListener workListener) |
protected long |
executeWork(TaskExecutor taskExecutor,
Work work,
long startTimeout,
boolean blockUntilStarted,
ExecutionContext executionContext,
WorkListener workListener)
Execute the given Work on the specified TaskExecutor.
|
void |
scheduleWork(Work work) |
void |
scheduleWork(Work work,
long startTimeout,
ExecutionContext executionContext,
WorkListener workListener) |
void |
setAsyncTaskExecutor(AsyncTaskExecutor asyncTaskExecutor)
Specify the TaskExecutor to use for asynchronous work execution
(i.e.
|
void |
setSyncTaskExecutor(TaskExecutor syncTaskExecutor)
Specify the TaskExecutor to use for synchronous work execution
(i.e.
|
long |
startWork(Work work) |
long |
startWork(Work work,
long startTimeout,
ExecutionContext executionContext,
WorkListener workListener) |
public void setSyncTaskExecutor(TaskExecutor syncTaskExecutor)
doWork(javax.resource.spi.work.Work) calls).
Default is a SyncTaskExecutor.
public void setAsyncTaskExecutor(AsyncTaskExecutor asyncTaskExecutor)
startWork(javax.resource.spi.work.Work) and scheduleWork(javax.resource.spi.work.Work) calls).
This will typically (but not necessarily) be an
AsyncTaskExecutor implementation.
Default is a SimpleAsyncTaskExecutor.
public void doWork(Work work) throws WorkException
doWork in interface WorkManagerWorkExceptionpublic void doWork(Work work, long startTimeout, @Nullable ExecutionContext executionContext, @Nullable WorkListener workListener) throws WorkException
doWork in interface WorkManagerWorkExceptionpublic long startWork(Work work) throws WorkException
startWork in interface WorkManagerWorkExceptionpublic long startWork(Work work, long startTimeout, @Nullable ExecutionContext executionContext, @Nullable WorkListener workListener) throws WorkException
startWork in interface WorkManagerWorkExceptionpublic void scheduleWork(Work work) throws WorkException
scheduleWork in interface WorkManagerWorkExceptionpublic void scheduleWork(Work work, long startTimeout, @Nullable ExecutionContext executionContext, @Nullable WorkListener workListener) throws WorkException
scheduleWork in interface WorkManagerWorkExceptionprotected long executeWork(TaskExecutor taskExecutor, Work work, long startTimeout, boolean blockUntilStarted, @Nullable ExecutionContext executionContext, @Nullable WorkListener workListener) throws WorkException
taskExecutor - the TaskExecutor to usework - the Work to executestartTimeout - the time duration within which the Work is supposed to startblockUntilStarted - whether to block until the Work has startedexecutionContext - the JCA ExecutionContext for the given WorkworkListener - the WorkListener to clal for the given WorkWorkException - if the TaskExecutor did not accept the Work