commonj.work
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 then this tells the runtime that the application will not interact with the Work directly while it is running. The runtime may decide in this case to dispatch the Work in a seperate JVM that also hosts this application. Obviously, if this happens then the Work will be serialized to the remote JVM, executed and the results propagated back. The WorkItem API will work correctly in this case. However, the application cannot in this case interrogate the local Work supplied to scheduleWork for results as it wasn't executed, a copy would have been executed remotely. The RemoteWorkItem.getResult() method will return the copy in this case.

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.

See Also:
WorkManager, WorkItem, RemoteWorkItem

Method Summary
 boolean isDaemon()
          This should return true if the work is long lived versus short lived.
 void release()
          The implementor should return from the Runnable.run method once this is called.
 
Methods inherited from interface java.lang.Runnable
run
 

Method Detail

release

public 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. This method is not called using the Work creator J2EE context and hence it cannot access any JNDI resources reliably. It should simply set any variables used to terminate the main loop in run and return. This method is also called on a different thread than the one used for the run method so the application should use inter-thread communication techniques (i.e. synchronized etc).


isDaemon

public boolean isDaemon()
This should return true if the work is long lived versus short lived. Long lived Works are not allocated from a pool.

Returns:
true if daemon (long lived)


Copyright BEA Systems, Inc. and International Business Machines Corp 2003. All rights reserved.