|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
javax.resource.spi.work Interface WorkManager
public interface WorkManager
此接口模拟
WorkManager
,它提供一个提交 Work
实例以供执行的工具。这样用户便不必创建直接执行工作的 Java 线程。此外,这样能更有效将线程资源入池,并能更好地控制线程使用。
Work
处理过程的各种阶段如下:
- 工作提交:提交
Work
实例以便执行。可能接受Work
实例,也可能拒绝并将WorkRejectedException
设置为相应的错误代码。 - 接受工作:接受提交的
Work
实例。接受的Work
实例可能开始执行,也可能再次拒绝并将WorkRejectedException
设置为相应的错误代码。除非指定了启动时间期限,否则不保证开始执行的时间。指定了启动时间时,必须在指定的期限(不是实时保证)内开始执行Work
,否则会失败并抛出错误代码设置为WorkRejected.TIMED_OUT
的WorkRejectedException
。 - 拒绝工作:拒绝
Work
实例。在Work
提交期间,或者在接受Work
实例之后(但在 Work 实例开始执行之前)可能会拒绝Work
实例。拒绝的原因可能是内部因素或者启动时间超时。在这两种情况下,都抛出带有相应错误代码(指示原因)的WorkRejectedException
。 - 开始工作:开始执行
Work
实例。这意味着已经为其执行分配了一个线程。但这并不保证已经安排了分配的线程在 CPU 资源上运行。开始执行之后,分配的线程设置相应的执行上下文(事务、安全等等)并调用 Work.run()。注意,在执行上下文设置或 Work.run() 期间抛出的任何异常将导致处理完成。 - 工作完成:完成
Work
的执行。执行完成时可能带有异常,也可能没有异常。WorkManager
在Work
处理(包括执行上下文设置)期间捕获任何异常,并用WorkCompletedException
包装。
version | 1.0 |
This interface models a WorkManager
which provides a facility
to submit Work
instances for execution. This frees the user
from having to create Java threads directly to do work. Further, this
allows efficient pooling of thread resources and more control over thread
usage.
The various stages in Work
processing are:
- work submit: A
Work
instance is being submitted for execution. TheWork
instance could either be accepted or rejected with aWorkRejectedException
set to an appropriate error code. - work accepted: The submitted
Work
instance has been accepted. The acceptedWork
instance could either start execution or could be rejected again with aWorkRejectedException
set to an appropriate error code. There is no guarantee on when the execution would start unless a start timeout duration is specified. When a start timeout is specified, theWork
execution must be started within the specified duration (not a real-time guarantee), failing which aWorkRejectedException
set to an error code (WorkRejected.TIMED_OUT
) is thrown. - work rejected: The
Work
instance has been rejected. TheWork
instance could be rejected duringWork
submittal or after theWork
instance has been accepted (but before Work instance starts execution). The rejection could be due to internal factors or start timeout expiration. AWorkRejectedException
with an appropriate error code (indicates the reason) is thrown in both cases. - work started: The execution of the
Work
instance has started. This means that a thread has been allocated for its execution. But this does not guarantee that the allocated thread has been scheduled to run on a CPU resource. Once execution is started, the allocated thread sets up an appropriate execution context (transaction , security, etc) and calls Work.run(). Note, any exception thrown during execution context setup or Work.run() leads to completion of processing. - work completed: The execution of the
Work
has been completed. The execution could complete with or without an exception. TheWorkManager
catches any exception thrown duringWork
processing (which includes execution context setup), and wraps it with aWorkCompletedException
.
- Version:
- 1.0
- Author:
- Ram Jeyaraman
Field Summary | |
---|---|
static long |
IMMEDIATE
A constant to indicate timeout duration. |
static long |
INDEFINITE
A constant to indicate timeout duration. |
static long |
UNKNOWN
A constant to indicate an unknown start delay duration or other unknown values. |
Method Summary | |
---|---|
void |
doWork(Work work)
Accepts a Work instance for processing. |
void |
doWork(Work work,
long startTimeout,
ExecutionContext execContext,
WorkListener workListener)
Accepts a Work instance for processing. |
void |
scheduleWork(Work work)
Accepts a Work instance for processing. |
void |
scheduleWork(Work work,
long startTimeout,
ExecutionContext execContext,
WorkListener workListener)
Accepts a Work instance for processing. |
long |
startWork(Work work)
Accepts a Work instance for processing. |
long |
startWork(Work work,
long startTimeout,
ExecutionContext execContext,
WorkListener workListener)
Accepts a Work instance for processing. |
Field Detail |
---|
英文文档:
IMMEDIATE
static final long IMMEDIATE
- A constant to indicate timeout duration. A zero timeout value indicates
an action be performed immediately.
- See Also:
- Constant Field Values
英文文档:
INDEFINITE
static final long INDEFINITE
- A constant to indicate timeout duration. A maximum timeout value
indicates that an action be performed arbitrarily without any time
constraint.
- See Also:
- Constant Field Values
英文文档:
UNKNOWN
static final long UNKNOWN
- A constant to indicate an unknown start delay duration or other unknown
values.
- See Also:
- Constant Field Values
Method Detail |
---|
public void
doWork(Work work) throws WorkException
接受 Work
实例以便进行处理。在 Work
实例完成执行前,此调用一直阻塞。不保证接受的 Work
实例何时开始执行,即对开始执行没有时间限制。
work | 要完成的工作单位。时间可长可短。 |
Throws | WorkRejectedException:
指示进一步处理时拒绝了 Work 实例。这可能是由内部因素引起的。 |
Throws | WorkCompletedException:
指示 Work 实例完成了执行,但有一个异常。 |
doWork
void doWork(Work work) throws WorkException
- Accepts a
Work
instance for processing. This call blocks until theWork
instance completes execution. There is no guarantee on when the acceptedWork
instance would start execution ie., there is no time constraint to start execution. - Parameters:
work
- The unit of work to be done. Could be long or short-lived.- Throws:
WorkRejectedException
- indicates that aWork
instance has been rejected from further processing. This can occur due to internal factors.WorkCompletedException
- indicates that aWork
instance has completed execution with an exception.WorkException
public void
doWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener) throws WorkException
接受 Work
实例以便进行处理。在 Work
实例完成执行前,此调用一直阻塞。
work | 要完成的工作单位。时间可长可短。 |
startTimeout |
一个时间范围(以毫秒为单位),在这段时间内必须开始执行 Work 实例。否则,Work 实例将被拒绝,并抛出设置为相应错误代码 (WorkRejectedException.TIMED_OUT ) 的 WorkRejectedException 。注意,此方法不提供实时保证。 |
execContext |
包含执行上下文的对象,必须使用该上下文执行提交的 Work 实例。 |
workListener |
当发生多个 Work 处理事件(接受 work、拒绝 work、开始 work、完成 work)时应该通知的对象。 |
Throws | WorkRejectedException:
指示进一步处理时拒绝了 Work 实例。这可能是由内部因素或者启动时间超时引起的。 |
Throws | WorkCompletedException:
指示 Work 实例完成了执行,但有一个异常。 |
doWork
void doWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener) throws WorkException
- Accepts a
Work
instance for processing. This call blocks until theWork
instance completes execution. - Parameters:
work
- The unit of work to be done. Could be long or short-lived.startTimeout
- a time duration (in milliseconds) within which the execution of theWork
instance must start. Otherwise, theWork
instance is rejected with aWorkRejectedException
set to an appropriate error code (WorkRejectedException.TIMED_OUT
). Note, this does not offer real-time guarantees.execContext
- an object containing the execution context with which the submittedWork
instance must be executed.workListener
- an object which would be notified when the variousWork
processing events (work accepted, work rejected, work started, work completed) occur.- Throws:
WorkRejectedException
- indicates that aWork
instance has been rejected from further processing. This can occur due to internal factors or start timeout expiration.WorkCompletedException
- indicates that aWork
instance has completed execution with an exception.WorkException
public long
startWork(Work work) throws WorkException
接受 Work
实例以便进行处理。在 Work
实例开始执行但未完成前,此调用一直阻塞。不保证接受的 Work
实例何时开始执行,即对开始执行没有时间限制。
work | 要完成的工作单位。时间可长可短。 |
return |
从接受 Work 到开始执行的时间(以毫秒为单位)。注意,此方法不提供实时保证。如果启动延迟期限未知,则返回 -1 是有效的。 |
Throws | WorkRejectedException:
指示进一步处理时拒绝了 Work 实例。这可能是由内部因素引起的。 |
startWork
long startWork(Work work) throws WorkException
- Accepts a
Work
instance for processing. This call blocks until theWork
instance starts execution but not until its completion. There is no guarantee on when the acceptedWork
instance would start execution ie., there is no time constraint to start execution. - Parameters:
work
- The unit of work to be done. Could be long or short-lived.- Returns:
- the time elapsed (in milliseconds) from
Work
acceptance until start of execution. Note, this does not offer real-time guarantees. It is valid to return -1, if the actual start delay duration is unknown. - Throws:
WorkRejectedException
- indicates that aWork
instance has been rejected from further processing. This can occur due to internal factors.WorkException
public long
startWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener) throws WorkException
接受 Work
实例以便进行处理。在 Work
实例开始执行但未完成前,此调用一直阻塞。不保证接受的 Work
实例何时开始执行,即对开始执行没有时间限制。
work | 要完成的工作单位。时间可长可短。 |
startTimeout |
一个时间范围(以毫秒为单位),在这段时间内必须开始执行 Work 实例。否则,Work 实例将被拒绝,并抛出设置为相应错误代码 (WorkRejectedException.TIMED_OUT ) 的 WorkRejectedException 。注意,此方法不提供实时保证。 |
execContext |
包含执行上下文的对象,必须使用该上下文执行提交的 Work 实例。 |
workListener |
当发生多个 Work 处理事件(接受 work、拒绝 work、开始 work、完成 work)时应该通知的对象。 |
return |
从接受 Work 到开始执行的时间(以毫秒为单位)。注意,此方法不提供实时保证。如果启动延迟期限未知,则返回 -1 是有效的。 |
Throws | WorkRejectedException:
指示进一步处理时拒绝了 Work 实例。这可能是由内部因素或者启动时间超时引起的。 |
startWork
long startWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener) throws WorkException
- Accepts a
Work
instance for processing. This call blocks until theWork
instance starts execution but not until its completion. There is no guarantee on when the acceptedWork
instance would start execution ie., there is no time constraint to start execution. - Parameters:
work
- The unit of work to be done. Could be long or short-lived.startTimeout
- a time duration (in milliseconds) within which the execution of theWork
instance must start. Otherwise, theWork
instance is rejected with aWorkRejectedException
set to an appropriate error code (WorkRejectedException.TIMED_OUT
). Note, this does not offer real-time guarantees.execContext
- an object containing the execution context with which the submittedWork
instance must be executed.workListener
- an object which would be notified when the variousWork
processing events (work accepted, work rejected, work started, work completed) occur.- Returns:
- the time elapsed (in milliseconds) from
Work
acceptance until start of execution. Note, this does not offer real-time guarantees. It is valid to return -1, if the actual start delay duration is unknown. - Throws:
WorkRejectedException
- indicates that aWork
instance has been rejected from further processing. This can occur due to internal factors or start timeout expiration.WorkException
public void
scheduleWork(Work work) throws WorkException
接受 Work
实例以便进行处理。此调用不会阻塞,接受了 Work
进行处理后便立即返回。不保证提交的 Work
实例何时开始执行,即对开始执行没有时间限制。
work | 要完成的工作单位。时间可长可短。 |
Throws | WorkRejectedException:
指示进一步处理时拒绝了 Work 实例。这可能是由内部因素引起的。 |
scheduleWork
void scheduleWork(Work work) throws WorkException
- Accepts a
Work
instance for processing. This call does not block and returns immediately once aWork
instance has been accepted for processing. There is no guarantee on when the submittedWork
instance would start execution ie., there is no time constraint to start execution. - Parameters:
work
- The unit of work to be done. Could be long or short-lived.- Throws:
WorkRejectedException
- indicates that aWork
instance has been rejected from further processing. This can occur due to internal factors.WorkException
public void
scheduleWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener) throws WorkException
接受 Work
实例以便进行处理。此调用不会阻塞,接受了 Work
进行处理后便立即返回。
work | 要完成的工作单位。时间可长可短。 |
startTimeout |
一个时间范围(以毫秒为单位),在这段时间内必须开始执行 Work 实例。否则,Work 实例将被拒绝,并抛出设置为相应错误代码 (WorkRejectedException.TIMED_OUT ) 的 WorkRejectedException 。注意,此方法不提供实时保证。 |
execContext |
包含执行上下文的对象,必须使用该上下文执行提交的 Work 实例。 |
workListener |
当发生多个 Work 处理事件(接受 work、拒绝 work、开始 work、完成 work)时应该通知的对象。 |
Throws | WorkRejectedException:
指示进一步处理时拒绝了 Work 实例。这可能是由内部因素引起的。 |
scheduleWork
void scheduleWork(Work work, long startTimeout, ExecutionContext execContext, WorkListener workListener) throws WorkException
- Accepts a
Work
instance for processing. This call does not block and returns immediately once aWork
instance has been accepted for processing. - Parameters:
work
- The unit of work to be done. Could be long or short-lived.startTimeout
- a time duration (in milliseconds) within which the execution of theWork
instance must start. Otherwise, theWork
instance is rejected with aWorkRejectedException
set to an appropriate error code (WorkRejectedException.TIMED_OUT
). Note, this does not offer real-time guarantees.execContext
- an object containing the execution context with which the submittedWork
instance must be executed.workListener
- an object which would be notified when the variousWork
processing events (work accepted, work rejected, work started, work completed) occur.- Throws:
WorkRejectedException
- indicates that aWork
instance has been rejected from further processing. This can occur due to internal factors.WorkException
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Submit a bug or feature
Copyright 2007 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.
PS : 未经我党受权你也可自由散发此文档。 如有任何错误请自行修正;若因此而造成任何损失请直接找人民主席,请勿与本人联系。谢谢!