public class WorkManagerTaskExecutor
extends org.springframework.jndi.JndiLocatorSupport
implements org.springframework.core.task.AsyncListenableTaskExecutor, org.springframework.scheduling.SchedulingTaskExecutor, commonj.work.WorkManager, org.springframework.beans.factory.InitializingBean
WorkManager
interface,
which either needs to be specified as reference or through the JNDI name.
This is the central convenience class for setting up a CommonJ WorkManager in a Spring context.
Also implements the CommonJ WorkManager interface itself, delegating all calls to the target WorkManager. Hence, a caller can choose whether it wants to talk to this executor through the Spring TaskExecutor interface or the CommonJ WorkManager interface.
The CommonJ WorkManager will usually be retrieved from the application server's JNDI environment, as defined in the server's management console.
Note: On the upcoming EE 7 compliant versions of WebLogic and WebSphere, a
org.springframework.scheduling.concurrent.DefaultManagedTaskExecutor
should be preferred, following JSR-236 support in Java EE 7.
Constructor and Description |
---|
WorkManagerTaskExecutor() |
Modifier and Type | Method and Description |
---|---|
void |
afterPropertiesSet() |
void |
execute(java.lang.Runnable task) |
void |
execute(java.lang.Runnable task,
long startTimeout) |
boolean |
prefersShortLivedTasks()
This task executor prefers short-lived work units.
|
commonj.work.WorkItem |
schedule(commonj.work.Work work) |
commonj.work.WorkItem |
schedule(commonj.work.Work work,
commonj.work.WorkListener workListener) |
void |
setTaskDecorator(org.springframework.core.task.TaskDecorator taskDecorator)
Specify a custom
TaskDecorator to be applied to any Runnable
about to be executed. |
void |
setWorkListener(commonj.work.WorkListener workListener)
Specify a CommonJ WorkListener to apply, if any.
|
void |
setWorkManager(commonj.work.WorkManager workManager)
Specify the CommonJ WorkManager to delegate to.
|
void |
setWorkManagerName(java.lang.String workManagerName)
Set the JNDI name of the CommonJ WorkManager.
|
<T> java.util.concurrent.Future<T> |
submit(java.util.concurrent.Callable<T> task) |
java.util.concurrent.Future<?> |
submit(java.lang.Runnable task) |
<T> org.springframework.util.concurrent.ListenableFuture<T> |
submitListenable(java.util.concurrent.Callable<T> task) |
org.springframework.util.concurrent.ListenableFuture<?> |
submitListenable(java.lang.Runnable task) |
boolean |
waitForAll(java.util.Collection workItems,
long timeout) |
java.util.Collection |
waitForAny(java.util.Collection workItems,
long timeout) |
convertJndiName, isResourceRef, lookup, lookup, setResourceRef
public void setWorkManager(commonj.work.WorkManager workManager)
Alternatively, you can also specify the JNDI name of the target WorkManager.
setWorkManagerName(java.lang.String)
public void setWorkManagerName(java.lang.String workManagerName)
This can either be a fully qualified JNDI name, or the JNDI name relative to the current environment naming context if "resourceRef" is set to "true".
setWorkManager(commonj.work.WorkManager)
,
JndiLocatorSupport.setResourceRef(boolean)
public void setWorkListener(commonj.work.WorkListener workListener)
This shared WorkListener instance will be passed on to the
WorkManager by all execute(java.lang.Runnable)
calls on this TaskExecutor.
public void setTaskDecorator(org.springframework.core.task.TaskDecorator taskDecorator)
TaskDecorator
to be applied to any Runnable
about to be executed.
Note that such a decorator is not necessarily being applied to the
user-supplied Runnable
/Callable
but rather to the actual
execution callback (which may be a wrapper around the user-supplied task).
The primary use case is to set some execution context around the task's invocation, or to provide some monitoring/statistics for task execution.
public void afterPropertiesSet() throws javax.naming.NamingException
afterPropertiesSet
in interface org.springframework.beans.factory.InitializingBean
javax.naming.NamingException
public void execute(java.lang.Runnable task)
execute
in interface java.util.concurrent.Executor
execute
in interface org.springframework.core.task.TaskExecutor
public void execute(java.lang.Runnable task, long startTimeout)
execute
in interface org.springframework.core.task.AsyncTaskExecutor
public java.util.concurrent.Future<?> submit(java.lang.Runnable task)
submit
in interface org.springframework.core.task.AsyncTaskExecutor
public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T> task)
submit
in interface org.springframework.core.task.AsyncTaskExecutor
public org.springframework.util.concurrent.ListenableFuture<?> submitListenable(java.lang.Runnable task)
submitListenable
in interface org.springframework.core.task.AsyncListenableTaskExecutor
public <T> org.springframework.util.concurrent.ListenableFuture<T> submitListenable(java.util.concurrent.Callable<T> task)
submitListenable
in interface org.springframework.core.task.AsyncListenableTaskExecutor
public boolean prefersShortLivedTasks()
prefersShortLivedTasks
in interface org.springframework.scheduling.SchedulingTaskExecutor
public commonj.work.WorkItem schedule(commonj.work.Work work) throws commonj.work.WorkException, java.lang.IllegalArgumentException
schedule
in interface commonj.work.WorkManager
commonj.work.WorkException
java.lang.IllegalArgumentException
public commonj.work.WorkItem schedule(commonj.work.Work work, commonj.work.WorkListener workListener) throws commonj.work.WorkException
schedule
in interface commonj.work.WorkManager
commonj.work.WorkException
public boolean waitForAll(java.util.Collection workItems, long timeout) throws java.lang.InterruptedException
waitForAll
in interface commonj.work.WorkManager
java.lang.InterruptedException
public java.util.Collection waitForAny(java.util.Collection workItems, long timeout) throws java.lang.InterruptedException
waitForAny
in interface commonj.work.WorkManager
java.lang.InterruptedException