TaskExecutor implementation that delegates to a CommonJ WorkManager,
implementing the
commonj.work.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: At the time of this writing, the CommonJ WorkManager facility
is only supported on IBM WebSphere 6.0+ and BEA WebLogic 9.0+,
despite being such a crucial API for an application server.
(There is a similar facility available on WebSphere 5.0 Enterprise,
though, which we will discuss below.)
A similar facility is available on WebSphere 5.0/5.1, under the name
"Asynch Beans". Its central interface is called WorkManager too and is
also obtained from JNDI, just like a standard CommonJ WorkManager.
However, this WorkManager variant is notably different: The central
execution method is called "startWork" instead of "schedule",
and takes a slightly different Work interface as parameter.
Support for this WebSphere 5 variant can be built with this class
and its helper DelegatingWork as template: Call the WorkManager's
startWork(Work) instead of schedule(Work)
in the execute(Runnable) implementation. Furthermore,
for simplicity's sake, drop the entire "Implementation of the CommonJ
WorkManager interface" section (and the corresponding
implements WorkManager clause at the class level).
Of course, you also need to change all commonj.work imports in
your WorkManagerTaskExecutor and DelegatingWork variants to the corresponding
WebSphere API imports (com.ibm.websphere.asynchbeans.WorkManager
and com.ibm.websphere.asynchbeans.Work , respectively).
This should be sufficient to get a TaskExecutor adapter for WebSphere 5.
author: Juergen Hoeller since: 2.0 |