All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonj.work.Work Maven / Gradle / Ivy

There is a newer version: 1.1.1
Show newest version
/* WorkManager for Application Servers
 * Version 1.1
 * Licensed Materials - Property of BEA and IBM
 *
 * ? Copyright BEA Systems, Inc. and International Business Machines Corp 2003-2004. All rights reserved.
 */

package commonj.work;

/**
 * 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
 * {@link 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.

* * The J2EE context active on the thread during WorkManager scheduling * will be applied to the run method. See {@link WorkManager} for details. * @see WorkManager * @see WorkItem * @see RemoteWorkItem * @since 1.0 * @version 1.1 */ public interface Work extends Runnable { /** * 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). * @since 1.0 */ void release(); /** * This should return true if the work is long lived (Daemon) versus short-lived.

* * Non-daemon Works are allocated from a thread pool and normally * should not last longer than the submitting container method. * The submitting method should wait until the short-lived (non-daemon) work * is complete if using resources that are only valid during the method's duration.

* * Daemon Works are not allocated from a thread pool and will automatically be * released when the submitting application ends. * @return true if daemon (long lived) * @since 1.0 */ boolean isDaemon(); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy