Interface Work
-
- All Superinterfaces:
- java.lang.Runnable
public interface Work extends java.lang.Runnable
This is implemented by applications when they want to run code blocks asynchronously. If an application supplied Work implements java.io.Serializable, this tells the application server that the application will not interact with the Work directly while it is running. The application server reserves the right to dispatch serializable units of work to other JVMs. The application server currently chooses not to dispatch to remote JVMs but might decide to dispatch to remote JVMs in future releases. If the Work does not implement Serializable then it is guaranteed to execute in the same JVM as the thread invoking WorkManager.startWork.If the server is quiescing then the runtime may call the release method on the Work once it starts executing to tell it to exit. If it doesn't respond to this 'signal' then it may be terminated by the runtime without warning.
The Work is also registered with its own EventSource once it is started. The WorkItem.getEventTrigger can be used to return a proxy that can be used to fire events to the running Work. This will work whether the Work is executed locally or remotely. However, in the remote case all arguments to the event being fired must be serializable or an IllegalArgumentException is thrown.
A Work object should implement any necessary event interfaces if this mechanism is to be exploited. The WorkItem.getEventTrigger method can then be used to fire events to those interfaces. If the Work doesn't implement the interface supplied to WorkItem.getEventTrigger then nothing happens and the event is ignored.
- See Also:
WorkManager
,WorkItem
-
-
Method Summary
Methods Modifier and Type Method and Description void
release()
The implementor should return from the Runnable.run method once this is called.
-
-
-
Method Detail
-
release
void release()
The implementor should return from the Runnable.run method once this is called.This method can be called by the runtime when the JVM is shutting down. It should never be called directly by the application. The EventSource mechanism attached to the WorkItem should be used when the application needs to communicate with the Work after it is started. For example:
WorkItem i = wm.startWork(myWork); ... Work proxy = (Work)i.getEventTrigger(Work.class); proxy.release(); ...
This is the 'safe' way to call release from an application in all cases. If an application uses the above approach then the run method should never be called on the proxy as this will almost definitely result in the application failing.
-
-